From da830291195c8952baec00cd2ffa666e69b0022c Mon Sep 17 00:00:00 2001 From: Steven Peckham Date: Fri, 7 Jan 2011 20:07:57 +0000 Subject: [PATCH] The "big kahuna" of chemistry commits for version 3.3. ADDED FEATURES: - morrison microphysics scheme now is linked to aerosol-cloud interactions for 1st and 2nd indirect effects - chem init code to ideal.F - aerosol feedbacks for MOSAIC, MADE/SORGAM, & GOCART with RRTMG for SW and LW - dust_opt=3 for GOCART dust emissions with MOSAIC and MADE/SORGAM - New chem_opt packages: - 30 = cbmzsorg - 35 = cbmzsorg_aq - 31 = dbmz_mosaic_dms_4bin - 32 = cbmz_mosaic_dms_4bin_aq - 33 = cbmz_mosaic_dms_8bin - 34 = cbmz_mosaic_dms_8bin_aq - 170 = cbmz_mosaic_kpp - 195 = saprc99_kpp - 198 = saprc99_mosaic_4bin_vbs2_kpp MINOR CHANGES: - Fixed units of dms_0 in registry.chem - Added sanity check to require cu_physics=5 with chem_conv_tr=1 - Patches for DMS: rate coefficient sign in MOSAIC, units issue in gocart_dmsemis, package check in MEGAN for MOSAIC DMS packages - Patch for MOSAIC sea salt for smallest size bins - Patch for vertical loop limits for theta_to_t and rh_to_mxrat in module_initialize_real.F (sent this to WRFHELP so it may already be in the NCAR repository) - Updated MOSAIC reference list - MaxVars in wrf_io.F90 made bigger to handle VBS - fix a divide by zero (when k=kte in the loops) in dyn_em/module_initialize_real.F - Some array dimensions in the registry code also needed to be enlarged to handle the VBS packages git-svn-id: https://svn-wrf-model.cgd.ucar.edu/trunk@4643 b0b5d27b-6f0f-0410-a2a3-cb1e977edc3d --- Registry/Registry.EM_CHEM | 54 +- Registry/registry.chem | 995 ++- chem/KPP/compile_wkc | 8 +- ...xtra_args_to_update_rconst_cbmz_mosaic.inc | 3 + .../extra_args_update_rconst_cbmz_mosaic.inc | 2 + .../extra_decls_update_rconst_cbmz_mosaic.inc | 2 + .../cbmz_mosaic/kpp_mechd_a_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_b_cbmz_mosaic.inc | 1 + .../inc/cbmz_mosaic/kpp_mechd_e_cbmz_bb.inc | 1 + .../cbmz_mosaic/kpp_mechd_e_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_ia_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_ib_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_ibu_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_l_cbmz_mosaic.inc | 1 + .../cbmz_mosaic/kpp_mechd_u_cbmz_mosaic.inc | 1 + .../extra_args_to_update_rconst_saprc99.inc | 1 + .../extra_args_update_rconst_saprc99.inc | 1 + .../extra_decls_update_rconst_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_a_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_b_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_e_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_ia_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_ib_saprc99.inc | 1 + .../KPP/inc/saprc99/kpp_mechd_ibu_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_l_saprc99.inc | 1 + chem/KPP/inc/saprc99/kpp_mechd_u_saprc99.inc | 1 + ...update_rconst_saprc99_mosaic_4bin_vbs2.inc | 3 + ...update_rconst_saprc99_mosaic_4bin_vbs2.inc | 2 + ...update_rconst_saprc99_mosaic_4bin_vbs2.inc | 2 + .../kpp_mechd_a_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_b_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_e_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_ia_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_ib_saprc99_mosaic_4bin_vbs2.inc | 1 + ...kpp_mechd_ibu_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_l_saprc99_mosaic_4bin_vbs2.inc | 1 + .../kpp_mechd_u_saprc99_mosaic_4bin_vbs2.inc | 1 + chem/KPP/kpp/kpp-2.1/src/gdata.h | 10 +- chem/KPP/kpp/kpp-2.1/src/lex.yy.c | 2405 +++++++ chem/KPP/kpp/kpp-2.1/src/y.tab.c | 1702 +++++ chem/KPP/kpp/kpp-2.1/src/y.tab.h | 77 + .../util/WRF_conform/WRFUserRateLaws.f90 | 74 +- chem/KPP/mechanisms/cbmz_bb/cbmz_bb.eqn | 239 +- chem/KPP/mechanisms/cbmz_mosaic/atoms_red | 107 + .../mechanisms/cbmz_mosaic/cbmz_mosaic.def | 180 + .../mechanisms/cbmz_mosaic/cbmz_mosaic.eqn | 209 + .../mechanisms/cbmz_mosaic/cbmz_mosaic.kpp | 11 + .../mechanisms/cbmz_mosaic/cbmz_mosaic.spc | 75 + .../cbmz_mosaic/cbmz_mosaic_wrfkpp.equiv | 25 + chem/KPP/mechanisms/saprc99/atoms_red | 107 + chem/KPP/mechanisms/saprc99/saprc99.def | 3 + chem/KPP/mechanisms/saprc99/saprc99.eqn | 374 + chem/KPP/mechanisms/saprc99/saprc99.kpp | 10 + chem/KPP/mechanisms/saprc99/saprc99.spc | 83 + .../mechanisms/saprc99/saprc99_wrfkpp.equiv | 9 + .../saprc99_mosaic_4bin_vbs2/atoms_red | 107 + .../saprc99_mosaic_4bin_vbs2.def | 30 + .../saprc99_mosaic_4bin_vbs2.eqn | 437 ++ .../saprc99_mosaic_4bin_vbs2.kpp | 10 + .../saprc99_mosaic_4bin_vbs2.spc | 104 + .../saprc99_mosaic_4bin_vbs2_wrfkpp.equiv | 9 + chem/KPP/util/wkc/get_wrf_chem_specs.c | 6 +- chem/Makefile | 5 +- chem/aerosol_driver.F | 77 +- chem/chem_driver.F | 76 +- chem/chemics_init.F | 550 +- chem/dry_dep_driver.F | 56 +- chem/emissions_driver.F | 277 +- chem/mechanism_driver.F | 4 +- chem/module_add_emiss_burn.F | 2 +- chem/module_aerosols_sorgam.F | 254 +- chem/module_bioemi_megan2.F | 74 +- chem/module_cbmz.F | 3 +- chem/module_cbmz_addemiss.F | 16 +- chem/module_data_mgn2mech.F | 151 + chem/module_data_mosaic_asect.F | 437 +- chem/module_data_mosaic_other.F | 92 +- chem/module_data_mosaic_therm.F | 104 +- chem/module_data_rrtmgaeropt.F | 129 + chem/module_data_sorgam.F | 2 +- chem/module_dep_simple.F | 567 +- chem/module_fastj_mie.F | 9 +- chem/module_ftuv_driver.F | 4 +- chem/module_gocart_dmsemis.F | 3 +- chem/module_input_chem_data.F | 345 +- chem/module_mosaic_addemiss.F | 383 +- chem/module_mosaic_cloudchem.F | 18 +- chem/module_mosaic_coag.F | 2 +- chem/module_mosaic_driver.F | 6358 ++++++++++++++++- chem/module_mosaic_drydep.F | 1 + chem/module_mosaic_movesect.F | 11 +- chem/module_mosaic_therm.F | 3642 +++++++++- chem/module_mosaic_wetscav.F | 5 +- chem/module_optical_averaging.F | 1764 +++-- chem/module_phot_fastj.F | 11 +- chem/optical_driver.F | 133 +- dyn_em/Makefile | 6 +- dyn_em/module_first_rk_step_part1.F | 9 + dyn_em/module_initialize_real.F | 10 +- dyn_em/start_em.F | 8 + main/ideal.F | 85 + phys/Makefile | 2 + phys/module_microphysics_driver.F | 10 +- phys/module_mp_morr_two_moment.F | 121 +- phys/module_ra_rrtmg_lw.F | 177 +- phys/module_ra_rrtmg_sw.F | 227 +- phys/module_radiation_driver.F | 51 + tools/gen_args.c | 3 +- tools/gen_interp.c | 3 +- tools/gen_scalar_derefs.c | 3 +- tools/misc.c | 6 +- tools/reg_parse.c | 18 +- tools/registry.h | 2 +- 113 files changed, 22330 insertions(+), 1478 deletions(-) create mode 100644 chem/KPP/inc/cbmz_mosaic/extra_args_to_update_rconst_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/extra_args_update_rconst_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/extra_decls_update_rconst_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_a_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_b_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_bb.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_ia_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_ib_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_ibu_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_l_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/cbmz_mosaic/kpp_mechd_u_cbmz_mosaic.inc create mode 100644 chem/KPP/inc/saprc99/extra_args_to_update_rconst_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/extra_args_update_rconst_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/extra_decls_update_rconst_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_a_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_b_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_e_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_ia_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_ib_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_ibu_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_l_saprc99.inc create mode 100644 chem/KPP/inc/saprc99/kpp_mechd_u_saprc99.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_to_update_rconst_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_update_rconst_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_decls_update_rconst_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_a_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_b_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_e_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ia_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ib_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ibu_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_l_saprc99_mosaic_4bin_vbs2.inc create mode 100644 chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_u_saprc99_mosaic_4bin_vbs2.inc create mode 100755 chem/KPP/kpp/kpp-2.1/src/lex.yy.c create mode 100755 chem/KPP/kpp/kpp-2.1/src/y.tab.c create mode 100755 chem/KPP/kpp/kpp-2.1/src/y.tab.h create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/atoms_red create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.def create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.eqn create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.kpp create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.spc create mode 100755 chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic_wrfkpp.equiv create mode 100755 chem/KPP/mechanisms/saprc99/atoms_red create mode 100755 chem/KPP/mechanisms/saprc99/saprc99.def create mode 100755 chem/KPP/mechanisms/saprc99/saprc99.eqn create mode 100644 chem/KPP/mechanisms/saprc99/saprc99.kpp create mode 100755 chem/KPP/mechanisms/saprc99/saprc99.spc create mode 100644 chem/KPP/mechanisms/saprc99/saprc99_wrfkpp.equiv create mode 100755 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/atoms_red create mode 100755 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.def create mode 100755 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.eqn create mode 100644 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.kpp create mode 100755 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.spc create mode 100644 chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2_wrfkpp.equiv create mode 100644 chem/module_data_rrtmgaeropt.F diff --git a/Registry/Registry.EM_CHEM b/Registry/Registry.EM_CHEM index 0dea64c006..8c84242735 100644 --- a/Registry/Registry.EM_CHEM +++ b/Registry/Registry.EM_CHEM @@ -57,7 +57,7 @@ include registry.dimspec # interpolated with a mask, as lu_index supplies that mask. # this next 1 is for the HFSoLE/PET demo; writing these to auxhist1 output over MCEL for coupling # with wave model, only if compiled with -DMCELIO, JM 2003/05/29 -state real LU_INDEX ij misc 1 - i02rh01d=(interp_fcnm)u=(copy_fcnm) "LU_INDEX" "LAND USE CATEGORY" "" +state real LU_INDEX ij misc 1 - i012rh01d=(interp_fcnm)u=(copy_fcnm) "LU_INDEX" "LAND USE CATEGORY" "" state real LU_MASK ij misc 1 - i3h1 "LU_MASK" "0 land 1 water" "" # znw, znu, dzs, and zs must be listed before any 3-d fields @@ -66,8 +66,8 @@ state real LU_MASK ij misc 1 - i3h1 "LU # dzs, and zs are not listed first, vertical level will not be encoded at # time 0. -state real znu k dyn_em 1 - irh "znu" "eta values on half (mass) levels" "" -state real znw k dyn_em 1 Z i01rh "znw" "eta values on full (w) levels" "" +state real znu k dyn_em 1 - irh "znu" "eta values on half (mass) levels" "" +state real znw k dyn_em 1 Z i0rh "znw" "eta values on full (w) levels" "" state real ZS l misc - Z irh "ZS" "DEPTHS OF CENTERS OF SOIL LAYERS" "m" state real DZS l misc - Z irh "DZS" "THICKNESSES OF SOIL LAYERS" "m" @@ -118,7 +118,7 @@ endif # # U Vel state real u ikjb dyn_em 2 X \ - i01rhusdf=(bdy_interp:dt) "U" "x-wind component" "m s-1" + i0rhusdf=(bdy_interp:dt) "U" "x-wind component" "m s-1" state real ru ikj dyn_em 1 X - "MU_U" "mu-coupled u" "Pa m s-1" state real ru_m ikj dyn_em 1 X - "ru_m" "" "" state real ru_tend ikj dyn_em 1 X - "ru_tend" "" "" @@ -131,7 +131,7 @@ state real u_g_tend | dyn_em 1 - i3rh "U_ # # V Vel state real v ikjb dyn_em 2 Y \ - i01rhusdf=(bdy_interp:dt) "V" "y-wind component" "m s-1" + i0rhusdf=(bdy_interp:dt) "V" "y-wind component" "m s-1" state real rv ikj dyn_em 1 Y - "MU_V" "mu-coupled v" "Pa m s-1" state real rv_m ikj dyn_em 1 Y - "rv_m" state real rv_tend ikj dyn_em 1 Y - "rv_tend" @@ -167,7 +167,7 @@ i1 real ph_save ikj dyn_em 1 Z # Potential Temperature state real t ikjb dyn_em 2 - \ - i01rhusdf=(bdy_interp:dt) "t" "perturbation potential temperature (theta-t0)" "K" + i0rhusdf=(bdy_interp:dt) "t" "perturbation potential temperature (theta-t0)" "K" state real t_init ikj dyn_em 1 - ir "t_init" "initial potential temperature" "K" i1 real t_tend ikj dyn_em 1 - @@ -304,7 +304,7 @@ state real dnw k dyn_em 1 - irh "d state real dn k dyn_em 1 - irh "dn " "d(eta) values between half (mass) levels" "" state real t_base k dyn_em 1 - ir "t_base" "BASE STATE T IN IDEALIZED CASES" "K" state real z ikj dyn_em 1 - - " " " " " " -i1 real mu_3d ikj dyn_em 1 - +#i1 real mu_3d ikj dyn_em 1 - state real z_at_w ikj dyn_em 1 Z state real cfn - misc - - irh "cfn" "extrapolation constant" "" state real cfn1 - misc - - irh "cfn1" "extrapolation constant" "" @@ -394,17 +394,17 @@ state real vc_j - misc - - r # state real - ikjftb moist 1 - - - state real qv ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QVAPOR" "Water vapor mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QVAPOR" "Water vapor mixing ratio" "kg kg-1" state real qc ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QCLOUD" "Cloud water mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QCLOUD" "Cloud water mixing ratio" "kg kg-1" state real qr ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QRAIN" "Rain water mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QRAIN" "Rain water mixing ratio" "kg kg-1" state real qi ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QICE" "Ice mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QICE" "Ice mixing ratio" "kg kg-1" state real qs ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QSNOW" "Snow mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QSNOW" "Snow mixing ratio" "kg kg-1" state real qg ikjftb moist 1 - \ - i01rhusdf=(bdy_interp:dt) "QGRAUP" "Graupel mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "QGRAUP" "Graupel mixing ratio" "kg kg-1" state real qh ikjftb moist 1 - \ i0rhusdf=(bdy_interp:dt) "QHAIL" "Hail mixing ratio" "kg kg-1" state real - ikjftb dfi_moist 1 - - - @@ -436,24 +436,24 @@ include registry.cam # Other Tracers in registry.chem # Other Scalars state real - ikjftb scalar 1 - - - -state real qni ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNICE" "Ice Number concentration" "# kg-1" state real qndrop ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNDROP" "Droplet number mixing ratio" "# kg-1" + i0rhusdf=(bdy_interp:dt) "QNDROP" "Droplet number mixing ratio" "# kg-1" +state real qni ikjftb scalar 1 - \ + i0rhusdf=(bdy_interp:dt) "QNICE" "Ice Number concentration" "# kg-1" state real qt ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "CWM" "Total condensate mixing ratio" "kg kg-1" + i0rhusdf=(bdy_interp:dt) "CWM" "Total condensate mixing ratio" "kg kg-1" state real qns ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNSNOW" "Snow Number concentration" "# kg(-1)" + i0rhusdf=(bdy_interp:dt) "QNSNOW" "Snow Number concentration" "# kg(-1)" state real qnr ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNRAIN" "Rain Number concentration" "# kg(-1)" + i0rhusdf=(bdy_interp:dt) "QNRAIN" "Rain Number concentration" "# kg(-1)" state real qng ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNGRAUPEL" "Graupel Number concentration" "# kg(-1)" + i0rhusdf=(bdy_interp:dt) "QNGRAUPEL" "Graupel Number concentration" "# kg(-1)" state real qnh ikjftb scalar 1 - \ i0rhusdf=(bdy_interp:dt) "QNHAIL" "Hail Number concentration" "# kg(-1)" state real qnn ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNCCN" "CCN Number concentration" "# kg(-1)" + i0rhusdf=(bdy_interp:dt) "QNCCN" "CCN Number concentration" "# kg(-1)" state real qnc ikjftb scalar 1 - \ - i01rhusdf=(bdy_interp:dt) "QNCLOUD" "cloud water Number concentration" "# kg(-1)" + i0rhusdf=(bdy_interp:dt) "QNCLOUD" "cloud water Number concentration" "# kg(-1)" state real - ikjftb dfi_scalar 1 - - - state real dfi_qndrop ikjftb dfi_scalar 1 - \ rusdf=(bdy_interp:dt) "DFI_QNDROP" "Droplet number mixing ratio" "# kg-1" @@ -601,7 +601,7 @@ state real SFCRUNOFF ij misc 1 - rhd=(interp state real UDRUNOFF ij misc 1 - rhd=(interp_mask_land_field:lu_index) "UDROFF" "UNDERGROUND RUNOFF" "mm" state integer IVGTYP ij misc 1 - i02rhd=(interp_fcni)u=(copy_fcni) "IVGTYP" "DOMINANT VEGETATION CATEGORY" "" state integer ISLTYP ij misc 1 - i02rhd=(interp_fcni)u=(copy_fcni) "ISLTYP" "DOMINANT SOIL CATEGORY" "" -state real VEGFRA ij misc 1 - i0124rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "VEGFRA" "VEGETATION FRACTION" "" +state real VEGFRA ij misc 1 - i024rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "VEGFRA" "VEGETATION FRACTION" "" state real SFCEVP ij misc 1 - r "SFCEVP" "SURFACE EVAPORATION" "kg m-2" state real GRDFLX ij misc 1 - rh "GRDFLX" "GROUND HEAT FLUX" "W m-2" state real ACGRDFLX ij misc 1 - rhdu "ACGRDFLX" "ACCUMULATED GROUND HEAT FLUX" "J m-2" @@ -611,7 +611,7 @@ state real ACSNOW ij misc 1 - rd=(interp_ state real ACSNOM ij misc 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "ACSNOM" "ACCUMULATED MELTED SNOW" "kg m-2" state real SNOW ij misc 1 - i012rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "SNOW" "SNOW WATER EQUIVALENT" "kg m-2" state real SNOWH ij misc 1 - i012rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "SNOWH" "PHYSICAL SNOW DEPTH" "m" -#state real RHOSN ij misc 1 - i012rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "RHOSN" " SNOW DENSITY" "kg m-3" +#state real RHOSN ij misc 1 - i02rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "RHOSN" " SNOW DENSITY" "kg m-3" state real CANWAT ij misc 1 - i012rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "CANWAT" "CANOPY WATER" "kg m-2" state real SST ij misc 1 - i0124rhd=(interp_mask_water_field:lu_index) "SST" "SEA SURFACE TEMPERATURE" "K" state integer IFNDSNOWH - misc 1 - i "FNDSNOWH" "SNOWH_LOGICAL" @@ -1285,7 +1285,7 @@ state real advz_qv ikjf advz_t 1 - - "a state real TML ij misc 1 - rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "TML" "OCEAN MIXED-LAYER TEMPERATURE" "K" state real T0ML ij misc 1 - rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "T0ML" "INITIAL OCEAN MIXED-LAYER TEMPERATURE" "K" state real HML ij misc 1 - rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "HML" "OCEAN MIXED-LAYER DEPTH" "m" -state real H0ML ij misc 1 - 012rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "H0ML" "INITIAL OCEAN MIXED-LAYER DEPTH" "m" +state real H0ML ij misc 1 - i012rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "H0ML" "INITIAL OCEAN MIXED-LAYER DEPTH" "m" state real HUML ij misc 1 - rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "HUML" "OCEAN MIXED-LAYER DEPTH * U-CURRENT" " m2s-1 " state real HVML ij misc 1 - rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "HVML" "OCEAN MIXED-LAYER DEPTH * V-CURRENT" " m2s-1 " state real TMOML ij misc 1 - i012rhd=(interp_mask_water_field:lu_index)u=(copy_fcnm) "TMOML" "OCEAN LAYER MEAN TEMPERATURE " "K" @@ -1847,7 +1847,7 @@ package wdm5scheme_dfi mp_physics_dfi==14 - dfi_moist:dfi package wdm6scheme_dfi mp_physics_dfi==16 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qs,dfi_qg;dfi_scalar:dfi_qnn,dfi_qnc,dfi_qnr package noprogn progn==0 - - -package progndrop progn==1 - scalar:qndrop +package progndrop progn==1 - scalar:qndrop;dfi_scalar:dfi_qndrop package rrtmscheme ra_lw_physics==1 - - package camlwscheme ra_lw_physics==3 - ozmixm:mth01,mth02,mth03,mth04,mth05,mth06,mth07,mth08,mth09,mth10,mth11,mth12;aerosolc:sul,sslt,dust1,dust2,dust3,dust4,ocpho,bcpho,ocphi,bcphi,bg,volc;state:acswupt,acswuptc,acswdnt,acswdntc,acswupb,acswupbc,acswdnb,acswdnbc,aclwupt,aclwuptc,aclwdnt,aclwdntc,aclwupb,aclwupbc,aclwdnb,aclwdnbc,i_acswupt,i_acswuptc,i_acswdnt,i_acswdntc,i_acswupb,i_acswupbc,i_acswdnb,i_acswdnbc,i_aclwupt,i_aclwuptc,i_aclwdnt,i_aclwdntc,i_aclwupb,i_aclwupbc,i_aclwdnb,i_aclwdnbc,swupt,swuptc,swdnt,swdntc,swupb,swupbc,swdnb,swdnbc,lwupt,lwuptc,lwdnt,lwdntc,lwupb,lwupbc,lwdnb,lwdnbc @@ -1901,7 +1901,7 @@ package sasscheme cu_physics==4 - - package g3scheme cu_physics==5 - state:cugd_qvten,cugd_tten,cugd_qvtens,cugd_ttens,cugd_qcten,xmb_shallow,k22_shallow,kbcon_shallow,ktop_shallow package camzmscheme cu_physics==7 - state:precz,zmdt,zmdq,zmdice,zmdliq,evaptzm,fzsntzm,evsntzm,evapqzm,zmflxprc,zmflxsnw,zmntprpd,zmntsnpd,zmeiheat,cmfmc,cmfmcdzm,preccdzm,pconvb,pconvt,cape,zmmtu,zmmtv,zmmu,zmmd,zmupgu,zmupgd,zmvpgu,zmvpgd,zmicuu,zmicud,zmicvu,zmicvd package g3tave cu_diag==1 - state:GD_CLOUD,GD_CLOUD2,GD_CLDFR,RAINCV_A,RAINCV_B,GD_CLOUD_A,GD_CLOUD_B,GD_CLOUD2_A,GD_CLOUD2_B,kbcon_deep,ktop_deep,k22_deep -package tiedtkescheme cu_physics==6 +package tiedtkescheme cu_physics==6 - - package nsasscheme cu_physics==14 - - package kfscheme cu_physics==99 - - diff --git a/Registry/registry.chem b/Registry/registry.chem index ff53cfcf2d..9b479cb1b3 100644 --- a/Registry/registry.chem +++ b/Registry/registry.chem @@ -73,6 +73,11 @@ state real e_so4c i+jf emis_ant 1 Z i5 "E_S state real e_no3c i+jf emis_ant 1 Z i5 "E_NO3C" "EMISSIONS COARSE NO3 AER" "ug/m3 m/s" state real e_orgc i+jf emis_ant 1 Z i5 "E_ORGC" "EMISSIONS COARSE ORG AER" "ug/m3 m/s" state real e_ecc i+jf emis_ant 1 Z i5 "E_ECC" "EMISSIONS COARSE EC AER" "ug/m3 m/s" +state real e_orgi_a i+jf emis_ant 1 Z i5 "E_ORGI_A" "EMISSIONS ORGI_A AER" "ug/m3 m/s" +state real e_orgj_a i+jf emis_ant 1 Z i5 "E_ORGJ_A" "EMISSIONS ORGJ_A AER" "ug/m3 m/s" +state real e_orgi_bb i+jf emis_ant 1 Z i5 "E_ORGI_BB" "EMISSIONS ORGI_BB AER" "ug/m3 m/s" +state real e_orgj_bb i+jf emis_ant 1 Z i5 "E_ORGJ_BB" "EMISSIONS ORGJ_BB AER" "ug/m3 m/s" + # GOCART state real e_bc i+jf emis_ant 1 Z i5 "E_BC" "EMISSIONS BC AER" "ug/m3 m/s" state real e_oc i+jf emis_ant 1 Z i5 "E_OC" "EMISSIONS BC AER" "ug/m3 m/s" @@ -89,6 +94,38 @@ state real e_vash8 i+jf emis_ant 1 Z i5 "E state real e_vash9 i+jf emis_ant 1 Z i5 "E_VASH9" "EMISSIONS VOLCANIC ASH BIN 9" "ug/m3 m/s" state real e_vash10 i+jf emis_ant 1 Z i5 "E_VASH10" "EMISSIONS VOLCANIC ASH BIN 10" "ug/m3 m/s" +#SAPRCNOV additional emissions, automatically created using diff_mechEmiss_wrfRegistry.m script (pablo-saide@uiowa.edu) +state real e_c2h2 i+jf emis_ant 1 Z i5 "E_C2H2" "C2H2 emissions" "mol km^-2 hr^-1" +state real e_alk3 i+jf emis_ant 1 Z i5 "E_ALK3" "ALK3 emissions" "mol km^-2 hr^-1" +state real e_alk4 i+jf emis_ant 1 Z i5 "E_ALK4" "ALK4 emissions" "mol km^-2 hr^-1" +state real e_alk5 i+jf emis_ant 1 Z i5 "E_ALK5" "ALK5 emissions" "mol km^-2 hr^-1" +state real e_ethene i+jf emis_ant 1 Z i5 "E_ETHENE" "ETHENE emissions" "mol km^-2 hr^-1" +state real e_ole1 i+jf emis_ant 1 Z i5 "E_OLE1" "OLE1 emissions" "mol km^-2 hr^-1" +state real e_ole2 i+jf emis_ant 1 Z i5 "E_OLE2" "OLE2 emissions" "mol km^-2 hr^-1" +state real e_aro1 i+jf emis_ant 1 Z i5 "E_ARO1" "ARO1 emissions" "mol km^-2 hr^-1" +state real e_aro2 i+jf emis_ant 1 Z i5 "E_ARO2" "ARO2 emissions" "mol km^-2 hr^-1" +state real e_ccho i+jf emis_ant 1 Z i5 "E_CCHO" "CCHO emissions" "mol km^-2 hr^-1" +state real e_rcho i+jf emis_ant 1 Z i5 "E_RCHO" "RCHO emissions" "mol km^-2 hr^-1" +state real e_acet i+jf emis_ant 1 Z i5 "E_ACET" "ACET emissions" "mol km^-2 hr^-1" +state real e_isoprene i+jf emis_ant 1 Z i5 "E_ISOPRENE" "ISOPRENE emissions" "mol km^-2 hr^-1" +state real e_terp i+jf emis_ant 1 Z i5 "E_TERP" "TERP emissions" "mol km^-2 hr^-1" +state real e_sesq i+jf emis_ant 1 Z i5 "E_SESQ" "SESQUITERPENE emissions" "mol km^-2 hr^-1" +state real e_phen i+jf emis_ant 1 Z i5 "E_PHEN" "PHEN emissions" "mol km^-2 hr^-1" +state real e_cres i+jf emis_ant 1 Z i5 "E_CRES" "CRES emissions" "mol km^-2 hr^-1" +state real e_meoh i+jf emis_ant 1 Z i5 "E_MEOH" "MEOH emissions" "mol km^-2 hr^-1" +state real e_gly i+jf emis_ant 1 Z i5 "E_GLY" "GLY emissions" "mol km^-2 hr^-1" +state real e_mgly i+jf emis_ant 1 Z i5 "E_MGLY" "MGLY emissions" "mol km^-2 hr^-1" +state real e_bacl i+jf emis_ant 1 Z i5 "E_BACL" "BACL emissions" "mol km^-2 hr^-1" +state real e_isoprod i+jf emis_ant 1 Z i5 "E_ISOPROD" "ISOPROD emissions" "mol km^-2 hr^-1" +state real e_methacro i+jf emis_ant 1 Z i5 "E_METHACRO" "METHACRO emissions" "mol km^-2 hr^-1" +state real e_mvk i+jf emis_ant 1 Z i5 "E_MVK" "MVK emissions" "mol km^-2 hr^-1" +state real e_prod2 i+jf emis_ant 1 Z i5 "E_PROD2" "PROD2 emissions" "mol km^-2 hr^-1" +state real e_ch4 i+jf emis_ant 1 Z i5 "E_CH4" "CH4 emissions" "mol km^-2 hr^-1" +state real e_bald i+jf emis_ant 1 Z i5 "E_BALD" "BALD emissions" "mol km^-2 hr^-1" +state real e_hcooh i+jf emis_ant 1 Z i5 "E_HCOOH" "HCOOH emissions" "mol km^-2 hr^-1" +state real e_cco_oh i+jf emis_ant 1 Z i5 "E_CCO_OH" "CCO_OH emissions" "mol km^-2 hr^-1" +state real e_rco_oh i+jf emis_ant 1 Z i5 "E_RCO_OH" "RCO_OH emissions" "mol km^-2 hr^-1" + # dust and seas emission arrays state real - i{dust}jf emis_dust - - - - "Dust Emissions" "" @@ -458,7 +495,56 @@ state real pm10 ikj misc 1 - h "pm1 state real uvrad ij misc 1 - - "uv_rad " "uvb net-radiation" "W m^-2" state real tcosz ij misc 1 - - "TCOSZ " "daily average cossza" "?" state real ttday ij misc 1 - - "TTDAY " "" "?" -state real dms_0 ij misc 1 - i08rh "DMS_0 " "dms reference concentrations" "?" +# dms_0 is the dms concentration in the ocean (aqueous phase) and it should be in the unit of nM/L (1.e-9mol/L) +state real dms_0 ij misc 1 - i08rh "DMS_0 " "dms oceanic concentrations" "nM/L" + +#Diagnostic Aerosol species +state real hoa_a01 ikj misc 1 - rh "hoa_a01" "hoa_a01" "ug m^-3" +state real hoa_a02 ikj misc 1 - rh "hoa_a02" "hoa_a02" "ug m^-3" +state real hoa_a03 ikj misc 1 - rh "hoa_a03" "hoa_a03" "ug m^-3" +state real hoa_a04 ikj misc 1 - rh "hoa_a04" "hoa_a04" "ug m^-3" +state real soa_a01 ikj misc 1 - rh "soa_a01" "soa_a01" "ug m^-3" +state real soa_a02 ikj misc 1 - rh "soa_a02" "soa_a02" "ug m^-3" +state real soa_a03 ikj misc 1 - rh "soa_a03" "soa_a03" "ug m^-3" +state real soa_a04 ikj misc 1 - rh "soa_a04" "soa_a04" "ug m^-3" +state real bboa_a01 ikj misc 1 - rh "bboa_a01" "bboa_a01" "ug m^-3" +state real bboa_a02 ikj misc 1 - rh "bboa_a02" "bboa_a02" "ug m^-3" +state real bboa_a03 ikj misc 1 - rh "bboa_a03" "bboa_a03" "ug m^-3" +state real bboa_a04 ikj misc 1 - rh "bboa_a04" "bboa_a04" "ug m^-3" +state real bbsoa_a01 ikj misc 1 - rh "bbsoa_a01" "bbsoa_a01" "ug m^-3" +state real bbsoa_a02 ikj misc 1 - rh "bbsoa_a02" "bbsoa_a02" "ug m^-3" +state real bbsoa_a03 ikj misc 1 - rh "bbsoa_a03" "bbsoa_a03" "ug m^-3" +state real bbsoa_a04 ikj misc 1 - rh "bbsoa_a04" "bbsoa_a04" "ug m^-3" +state real hsoa_a01 ikj misc 1 - rh "hsoa_a01" "hsoa_a01" "ug m^-3" +state real hsoa_a02 ikj misc 1 - rh "hsoa_a02" "hsoa_a02" "ug m^-3" +state real hsoa_a03 ikj misc 1 - rh "hsoa_a03" "hsoa_a03" "ug m^-3" +state real hsoa_a04 ikj misc 1 - rh "hsoa_a04" "hsoa_a04" "ug m^-3" +state real biog_a01 ikj misc 1 - rh "biog_a01" "biog_a01" "ug m^-3" +state real biog_a02 ikj misc 1 - rh "biog_a02" "biog_a02" "ug m^-3" +state real biog_a03 ikj misc 1 - rh "biog_a03" "biog_a03" "ug m^-3" +state real biog_a04 ikj misc 1 - rh "biog_a04" "biog_a04" "ug m^-3" +state real arosoa_a01 ikj misc 1 - rh "arosoa_a01" "arosoa_a01" "ug m^-3" +state real arosoa_a02 ikj misc 1 - rh "arosoa_a02" "arosoa_a02" "ug m^-3" +state real arosoa_a03 ikj misc 1 - rh "arosoa_a03" "arosoa_a03" "ug m^-3" +state real arosoa_a04 ikj misc 1 - rh "arosoa_a04" "arosoa_a04" "ug m^-3" +state real totoa_a01 ikj misc 1 - rh "totoa_a01" "totoa_a01" "ug m^-3" +state real totoa_a02 ikj misc 1 - rh "totoa_a02" "totoa_a02" "ug m^-3" +state real totoa_a03 ikj misc 1 - rh "totoa_a03" "totoa_a03" "ug m^-3" +state real totoa_a04 ikj misc 1 - rh "totoa_a04" "totoa_a04" "ug m^-3" +state real hsoa_c ikj misc 1 - rh "hsoa_c" "hsoa_c" "ug m^-3" +state real hsoa_o ikj misc 1 - rh "hsoa_o" "hsoa_o" "ug m^-3" +state real bbsoa_c ikj misc 1 - rh "bbsoa_c" "bbsoa_c" "ug m^-3" +state real bbsoa_o ikj misc 1 - rh "bbsoa_o" "bbsoa_o" "ug m^-3" +state real biog_v1 ikj misc 1 - rh "biog_v1" "biog_v1" "ug m^-3" +state real biog_v2 ikj misc 1 - rh "biog_v2" "biog_v2" "ug m^-3" +state real biog_v3 ikj misc 1 - rh "biog_v3" "biog_v3" "ug m^-3" +state real biog_v4 ikj misc 1 - rh "biog_v4" "biog_v4" "ug m^-3" +state real ant_v1 ikj misc 1 - rh "ant_v1" "ant_v1" "ug m^-3" +state real ant_v2 ikj misc 1 - rh "ant_v2" "ant_v2" "ug m^-3" +state real ant_v3 ikj misc 1 - rh "ant_v3" "ant_v3" "ug m^-3" +state real ant_v4 ikj misc 1 - rh "ant_v4" "ant_v4" "ug m^-3" +state integer vbs_nbin v misc 1 - r "vbs_nbin" "vbs_nbin" "" + # photolysis rates state real ph_o31d ikj misc 1 - r "PHOTR2" "O31D Photolysis Rate" "min{-1}" @@ -511,6 +597,39 @@ state real ph_mekooh ikj misc 1 - - "PH state real ph_tolooh ikj misc 1 - - "PHOTR133" "tolooh photolysis rate" "min{-1}" state real ph_terpooh ikj misc 1 - - "PHOTR134" "terpooh photolysis rate" "min{-1}" # +# Aerosol optical properties from Mie code for rrtmg radiation +state real extaerlw1 ikj misc 1 - hr "LWEXTAER1" "layer extinction coef" "1/km" +state real extaerlw2 ikj misc 1 - hr "LWEXTAER2" "layer extinction coef" "1/km" +state real extaerlw3 ikj misc 1 - hr "LWEXTAER3" "layer extinction coef" "1/km" +state real extaerlw4 ikj misc 1 - hr "LWEXTAER4" "layer extinction coef" "1/km" +state real extaerlw5 ikj misc 1 - hr "LWEXTAER5" "layer extinction coef" "1/km" +state real extaerlw6 ikj misc 1 - hr "LWEXTAER6" "layer extinction coef" "1/km" +state real extaerlw7 ikj misc 1 - hr "LWEXTAER7" "layer extinction coef" "1/km" +state real extaerlw8 ikj misc 1 - hr "LWEXTAER8" "layer extinction coef" "1/km" +state real extaerlw9 ikj misc 1 - hr "LWEXTAER9" "layer extinction coef" "1/km" +state real extaerlw10 ikj misc 1 - hr "LWEXTAER10" "layer extinction coef" "1/km" +state real extaerlw11 ikj misc 1 - hr "LWEXTAER11" "layer extinction coef" "1/km" +state real extaerlw12 ikj misc 1 - hr "LWEXTAER12" "layer extinction coef" "1/km" +state real extaerlw13 ikj misc 1 - hr "LWEXTAER13" "layer extinction coef" "1/km" +state real extaerlw14 ikj misc 1 - hr "LWEXTAER14" "layer extinction coef" "1/km" +state real extaerlw15 ikj misc 1 - hr "LWEXTAER15" "layer extinction coef" "1/km" +state real extaerlw16 ikj misc 1 - hr "LWEXTAER16" "layer extinction coef" "1/km" +state real tauaerlw1 ikj misc 1 - hr "LWTAUAER1" "layer optical thickness" " " +state real tauaerlw2 ikj misc 1 - hr "LWTAUAER2" "layer optical thickness" " " +state real tauaerlw3 ikj misc 1 - hr "LWTAUAER3" "layer optical thickness" " " +state real tauaerlw4 ikj misc 1 - hr "LWTAUAER4" "layer optical thickness" " " +state real tauaerlw5 ikj misc 1 - hr "LWTAUAER5" "layer optical thickness" " " +state real tauaerlw6 ikj misc 1 - hr "LWTAUAER6" "layer optical thickness" " " +state real tauaerlw7 ikj misc 1 - hr "LWTAUAER7" "layer optical thickness" " " +state real tauaerlw8 ikj misc 1 - hr "LWTAUAER8" "layer optical thickness" " " +state real tauaerlw9 ikj misc 1 - hr "LWTAUAER9" "layer optical thickness" " " +state real tauaerlw10 ikj misc 1 - hr "LWTAUAER10" "layer optical thickness" " " +state real tauaerlw11 ikj misc 1 - hr "LWTAUAER11" "layer optical thickness" " " +state real tauaerlw12 ikj misc 1 - hr "LWTAUAER12" "layer optical thickness" " " +state real tauaerlw13 ikj misc 1 - hr "LWTAUAER13" "layer optical thickness" " " +state real tauaerlw14 ikj misc 1 - hr "LWTAUAER14" "layer optical thickness" " " +state real tauaerlw15 ikj misc 1 - hr "LWTAUAER15" "layer optical thickness" " " +state real tauaerlw16 ikj misc 1 - hr "LWTAUAER16" "layer optical thickness" " " # Aerosol optical properties from Mie code state real extaer1 ikj misc 1 - - "EXTAER1" "bin 1 layer extinction coef" "1/km" state real extaer2 ikj misc 1 - - "EXTAER2" "bin 2 layer extinction coef" "1/km" @@ -587,6 +706,13 @@ state real xno2 ikj misc 1 - r "xno2 state real ol2p ikj misc 1 - r "ol2p" "Radicals" "ppm" state real oln ikj misc 1 - r "oln" "Radicals" "ppm" state real macp ikj misc 1 - r "macp" "Radicals" "ppm" + +#Additional SAPRCNOV non transported radicals +state real hocoo ikj misc 1 - r "hocoo" "Radicals" "ppm" +state real bzno2_o ikj misc 1 - r "bzno2_o" "Radicals" "ppm" +state real bz_o ikj misc 1 - r "bz_o" "Radicals" "ppm" +state real tbu_o ikj misc 1 - r "tbu_o" "Radicals" "ppm" + # Chem Scalars state real - ikjftb chem 1 - - - state real so2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so2" "SO2 concentration" "ppmv" @@ -630,6 +756,105 @@ state real csl ikjftb chem 1 - irhusdf=(bdy_inter state real iso ikjftb chem 1 - irhusdf=(bdy_interp:dt) "iso" "ISO concentration" "ppmv" state real ho ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ho" "HO concentration" "ppmv" state real ho2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ho2" "HO2 concentration" "ppmv" +state real aro1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1" "ARO1 concentration" "ppmv" +state real aro2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2" "ARO2 concentration" "ppmv" +state real alk1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1" "ALK1 concentration" "ppmv" +state real ole1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1" "OLE1 concentration" "ppmv" +state real api1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1" "API1 concentration" "ppmv" +state real api2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2" "API2 concentration" "ppmv" +state real lim1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1" "LIM1 concentration" "ppmv" +state real lim2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2" "LIM2 concentration" "ppmv" +state real psd1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "psd1" "LIM2 concentration" "ppmv" +state real psd2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "psd2" "LIM2 concentration" "ppmv" +state real nume ikjftb chem 1 - irhusdf=(bdy_interp:dt) "nume" "LIM2 concentration" "ppmv" +state real den ikjftb chem 1 - irhusdf=(bdy_interp:dt) "den" "LIM2 concentration" "ppmv" +state real pcg1_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c" "pcg1_b_c concentration" "ppmv" +state real pcg2_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c" "pcg2_b_c concentration" "ppmv" +state real pcg3_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c" "pcg3_b_c concentration" "ppmv" +state real pcg4_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c" "pcg4_b_c concentration" "ppmv" +state real pcg5_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c" "pcg5_b_c concentration" "ppmv" +state real pcg6_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c" "pcg6_b_c concentration" "ppmv" +state real pcg7_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c" "pcg7_b_c concentration" "ppmv" +state real pcg8_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c" "pcg8_b_c concentration" "ppmv" +state real pcg9_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c" "pcg9_b_c concentration" "ppmv" +state real pcg1_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o" "pcg1_b_o concentration" "ppmv" +state real pcg2_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o" "pcg2_b_o concentration" "ppmv" +state real pcg3_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o" "pcg3_b_o concentration" "ppmv" +state real pcg4_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o" "pcg4_b_o concentration" "ppmv" +state real pcg5_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o" "pcg5_b_o concentration" "ppmv" +state real pcg6_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o" "pcg6_b_o concentration" "ppmv" +state real pcg7_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o" "pcg7_b_o concentration" "ppmv" +state real pcg8_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o" "pcg8_b_o concentration" "ppmv" +state real pcg9_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o" "pcg9_b_o concentration" "ppmv" +state real pcg1_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c" "pcg1_f_c concentration" "ppmv" +state real pcg2_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c" "pcg2_f_c concentration" "ppmv" +state real pcg3_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c" "pcg3_f_c concentration" "ppmv" +state real pcg4_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c" "pcg4_f_c concentration" "ppmv" +state real pcg5_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c" "pcg5_f_c concentration" "ppmv" +state real pcg6_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c" "pcg6_f_c concentration" "ppmv" +state real pcg7_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c" "pcg7_f_c concentration" "ppmv" +state real pcg8_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c" "pcg8_f_c concentration" "ppmv" +state real pcg9_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c" "pcg9_f_c concentration" "ppmv" +state real pcg1_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o" "pcg1_f_o concentration" "ppmv" +state real pcg2_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o" "pcg2_f_o concentration" "ppmv" +state real pcg3_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o" "pcg3_f_o concentration" "ppmv" +state real pcg4_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o" "pcg4_f_o concentration" "ppmv" +state real pcg5_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o" "pcg5_f_o concentration" "ppmv" +state real pcg6_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o" "pcg6_f_o concentration" "ppmv" +state real pcg7_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o" "pcg7_f_o concentration" "ppmv" +state real pcg8_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o" "pcg8_f_o concentration" "ppmv" +state real pcg9_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o" "pcg9_f_o concentration" "ppmv" +state real opcg1_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c" "opcg1_b_c concentration" "ppmv" +state real opcg2_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c" "opcg2_b_c concentration" "ppmv" +state real opcg3_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c" "opcg3_b_c concentration" "ppmv" +state real opcg4_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c" "opcg4_b_c concentration" "ppmv" +state real opcg5_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c" "opcg5_b_c concentration" "ppmv" +state real opcg6_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c" "opcg6_b_c concentration" "ppmv" +state real opcg7_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c" "opcg7_b_c concentration" "ppmv" +state real opcg8_b_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c" "opcg8_b_c concentration" "ppmv" +state real opcg1_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o" "opcg1_b_o concentration" "ppmv" +state real opcg2_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o" "opcg2_b_o concentration" "ppmv" +state real opcg3_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o" "opcg3_b_o concentration" "ppmv" +state real opcg4_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o" "opcg4_b_o concentration" "ppmv" +state real opcg5_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o" "opcg5_b_o concentration" "ppmv" +state real opcg6_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o" "opcg6_b_o concentration" "ppmv" +state real opcg7_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o" "opcg7_b_o concentration" "ppmv" +state real opcg8_b_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o" "opcg8_b_o concentration" "ppmv" +state real opcg1_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c" "opcg1_f_c concentration" "ppmv" +state real opcg2_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c" "opcg2_f_c concentration" "ppmv" +state real opcg3_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c" "opcg3_f_c concentration" "ppmv" +state real opcg4_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c" "opcg4_f_c concentration" "ppmv" +state real opcg5_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c" "opcg5_f_c concentration" "ppmv" +state real opcg6_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c" "opcg6_f_c concentration" "ppmv" +state real opcg7_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c" "opcg7_f_c concentration" "ppmv" +state real opcg8_f_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c" "opcg8_f_c concentration" "ppmv" +state real opcg1_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o" "opcg1_f_o concentration" "ppmv" +state real opcg2_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o" "opcg2_f_o concentration" "ppmv" +state real opcg3_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o" "opcg3_f_o concentration" "ppmv" +state real opcg4_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o" "opcg4_f_o concentration" "ppmv" +state real opcg5_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o" "opcg5_f_o concentration" "ppmv" +state real opcg6_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o" "opcg6_f_o concentration" "ppmv" +state real opcg7_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o" "opcg7_f_o concentration" "ppmv" +state real opcg8_f_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o" "opcg8_f_o concentration" "ppmv" +state real ant1_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_c" "ant1_c concentration" "ppmv" +state real ant2_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_c" "ant2_c concentration" "ppmv" +state real ant3_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_c" "ant3_c concentration" "ppmv" +state real ant4_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_c" "ant4_c concentration" "ppmv" +state real ant1_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_o" "ant1_o concentration" "ppmv" +state real ant2_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_o" "ant2_o concentration" "ppmv" +state real ant3_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_o" "ant3_o concentration" "ppmv" +state real ant4_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_o" "ant4_o concentration" "ppmv" +state real biog1_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_c" "biog1_c concentration" "ppmv" +state real biog2_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_c" "biog2_c concentration" "ppmv" +state real biog3_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_c" "biog3_c concentration" "ppmv" +state real biog4_c ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_c" "biog4_c concentration" "ppmv" +state real biog1_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_o" "biog1_o concentration" "ppmv" +state real biog2_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_o" "biog2_o concentration" "ppmv" +state real biog3_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_o" "biog3_o concentration" "ppmv" +state real biog4_o ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_o" "biog4_o concentration" "ppmv" + + + #RACM has a few more variables to those of RADM2 (ETE is equivilant to OL2 from RADM2) @@ -752,7 +977,7 @@ state real tracer_ens ikjftb chem 1 - irhusdf=(bdy_int state real - ikjftb tracer 1 - - - state real smoke ikjftb tracer 1 - irhusdf=(bdy_interp:dt) "smoke" "tracing smoke" - -state real tr17_0 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_0" "tr17_0" - +#state real tr17_0 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_0" "tr17_0" - state real tr17_1 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_1" "tr17_1" - state real tr17_2 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_2" "tr17_2" - state real tr17_3 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_3" "tr17_3" - @@ -761,7 +986,7 @@ state real tr17_5 ikjftb tracer 1 - i08rhusdf=(bdy_ state real tr17_6 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_6" "tr17_6" - state real tr17_7 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_7" "tr17_7" - state real tr17_8 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_8" "tr17_8" - -state real tr17_9 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_9" "tr17_9" - +#state real tr17_9 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr17_9" "tr17_9" - state real tr18_0 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr18_0" "tr18_0" - state real tr18_1 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr18_1" "tr18_1" - state real tr18_2 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr18_2" "tr18_2" - @@ -773,6 +998,61 @@ state real tr18_7 ikjftb tracer 1 - i08rhusdf=(bdy_ state real tr18_8 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr18_8" "tr18_8" - state real tr18_9 ikjftb tracer 1 - i08rhusdf=(bdy_interp:dt) "tr18_9" "tr18_9" - +#SAPRCNOV additional variables, automatically created using diff_mechanisSpc_wrfRegistry.m script (pablo-saide@uiowa.edu) +state real h2so4 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "h2so4" "H2SO4 concentration" "ppmv" +state real ccho ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ccho" "CCHO concentration" "ppmv" +state real rcho ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rcho" "RCHO concentration" "ppmv" +state real etoh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "etoh" "ETOH concentration" "ppmv" +state real cco_oh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cco_oh" "CCO_OH concentration" "ppmv" +state real rco_oh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rco_oh" "RCO_OH concentration" "ppmv" +state real bacl ikjftb chem 1 - irhusdf=(bdy_interp:dt) "bacl" "BACL concentration" "ppmv" +state real bald ikjftb chem 1 - irhusdf=(bdy_interp:dt) "bald" "BALD concentration" "ppmv" +state real isoprod ikjftb chem 1 - irhusdf=(bdy_interp:dt) "isoprod" "ISOPROD concentration" "ppmv" +state real methacro ikjftb chem 1 - irhusdf=(bdy_interp:dt) "methacro" "METHACRO concentration" "ppmv" +state real prod2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "prod2" "PROD2 concentration" "ppmv" +state real dcb1 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "dcb1" "DCB1 concentration" "ppmv" +state real dcb2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "dcb2" "DCB2 concentration" "ppmv" +state real dcb3 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "dcb3" "DCB3 concentration" "ppmv" +state real ethene ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ethene" "ETHENE concentration" "ppmv" +state real isoprene ikjftb chem 1 - irhusdf=(bdy_interp:dt) "isoprene" "ISOPRENE concentration" "ppmv" +state real c2h2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "c2h2" "C2H2 concentration" "ppmv" +state real alk3 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk3" "ALK3 concentration" "ppmv" +state real alk4 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk4" "ALK4 concentration" "ppmv" +state real alk5 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk5" "ALK5 concentration" "ppmv" +state real ole2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole2" "OLE2 concentration" "ppmv" +state real terp ikjftb chem 1 - irhusdf=(bdy_interp:dt) "terp" "TERP concentration" "ppmv" +state real sesq ikjftb chem 1 - irhusdf=(bdy_insesq:dt) "sesq" "SESQ concentration" "ppmv" +state real rno3 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rno3" "RNO3 concentration" "ppmv" +state real nphe ikjftb chem 1 - irhusdf=(bdy_interp:dt) "nphe" "NPHE concentration" "ppmv" +state real phen ikjftb chem 1 - irhusdf=(bdy_interp:dt) "phen" "PHEN concentration" "ppmv" +state real pan2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pan2" "PAN2 concentration" "ppmv" +state real pbzn ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pbzn" "PBZN concentration" "ppmv" +state real ma_pan ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ma_pan" "MA_PAN concentration" "ppmv" +state real bc_spr ikjftb chem 1 - irusdf=(bdy_interp:dt) "bc_spr" "BC_SPR concentration" "ppmv" +state real oc_spr ikjftb chem 1 - irusdf=(bdy_interp:dt) "oc_spr" "OC_SPR concentration" "ppmv" +state real ssf ikjftb chem 1 - irusdf=(bdy_interp:dt) "ssf" "SSF concentration" "ppmv" +state real ssc ikjftb chem 1 - irusdf=(bdy_interp:dt) "ssc" "SSC concentration" "ppmv" +state real pm10_spr ikjftb chem 1 - irusdf=(bdy_interp:dt) "pm10_spr" "PM10_SPR concentration" "ppmv" +state real pm25_spr ikjftb chem 1 - irusdf=(bdy_interp:dt) "pm25_spr" "PM25_SPR concentration" "ppmv" +state real dst1 ikjftb chem 1 - irusdf=(bdy_interp:dt) "dst1" "DST1 concentration" "ppmv" +state real dst2 ikjftb chem 1 - irusdf=(bdy_interp:dt) "dst2" "DST2 concentration" "ppmv" +state real dst3 ikjftb chem 1 - irusdf=(bdy_interp:dt) "dst3" "DST3 concentration" "ppmv" +state real cco_ooh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cco_ooh" "CCO_OOH concentration" "ppmv" +state real rco_o2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rco_o2" "RCO_O2 concentration" "ppmv" +state real rco_ooh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rco_ooh" "RCO_OOH concentration" "ppmv" +state real xn ikjftb chem 1 - irhusdf=(bdy_interp:dt) "xn" "XN concentration" "ppmv" +state real xc ikjftb chem 1 - irhusdf=(bdy_interp:dt) "xc" "XC concentration" "ppmv" +state real c_o2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "c_o2" "C_O2 concentration" "ppmv" +state real cooh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cooh" "COOH concentration" "ppmv" +state real rooh ikjftb chem 1 - irhusdf=(bdy_interp:dt) "rooh" "ROOH concentration" "ppmv" +state real ro2_r ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ro2_r" "RO2_R concentration" "ppmv" +state real r2o2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "r2o2" "R2O2 concentration" "ppmv" +state real ro2_n ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ro2_n" "RO2_N concentration" "ppmv" +state real cco_o2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cco_o2" "CCO_O2 concentration" "ppmv" +state real bzco_o2 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "bzco_o2" "BZCO_O2 concentration" "ppmv" +state real ma_rco3 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ma_rco3" "MA_RCO3 concentration" "ppmv" + + #Aerosol variables inside the chem array... # the first two are for simple advection of total pm25 and pm10 mass # @@ -868,6 +1148,98 @@ state real nald ikjftb chem 1 - irhusdf=(bdy_inter state real so4_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a01" "Sulfate, aerosol bin 01" "ug/kg-dryair" state real no3_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a01" "Nitrate, aerosol bin 01" "ug/kg-dryair" +state real aro1_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a01" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a01" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a01" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a01" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a01" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a01" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a01" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a01" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a01" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a01" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a01" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a01" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a01" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a01" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a01" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a01" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a01" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a01" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a01" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a01" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a01" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a01" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a01" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a01" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a01" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a01" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a01" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a01" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a01" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a01" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a01" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a01" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a01" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a01" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a01" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a01" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a01" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a01" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a01" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a01" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a01" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a01" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a01" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a01" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a01" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a01" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a01" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a01" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a01" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a01" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a01" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a01" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a01" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a01" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a01" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a01" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a01" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a01" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a01" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a01" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a01" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a01" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a01" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a01" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a01" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a01" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a01" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a01" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a01" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a01" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a01" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a01" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a01" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a01" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a01" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a01" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real ant1_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_c_a01" "ant1_c, aerosol bin 01" "ug/kg-dryair" +state real ant2_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_c_a01" "ant2_c, aerosol bin 01" "ug/kg-dryair" +state real ant3_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_c_a01" "ant3_c, aerosol bin 01" "ug/kg-dryair" +state real ant4_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_c_a01" "ant4_c, aerosol bin 01" "ug/kg-dryair" +state real ant1_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_o_a01" "ant1_o, aerosol bin 01" "ug/kg-dryair" +state real ant2_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_o_a01" "ant2_o, aerosol bin 01" "ug/kg-dryair" +state real ant3_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_o_a01" "ant3_o, aerosol bin 01" "ug/kg-dryair" +state real ant4_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_o_a01" "ant4_o, aerosol bin 01" "ug/kg-dryair" +state real biog1_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_c_a01" "biog1_c, aerosol bin 01" "ug/kg-dryair" +state real biog2_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_c_a01" "biog2_c, aerosol bin 01" "ug/kg-dryair" +state real biog3_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_c_a01" "biog3_c, aerosol bin 01" "ug/kg-dryair" +state real biog4_c_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_c_a01" "biog4_c, aerosol bin 01" "ug/kg-dryair" +state real biog1_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_o_a01" "biog1_o, aerosol bin 01" "ug/kg-dryair" +state real biog2_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_o_a01" "biog2_o, aerosol bin 01" "ug/kg-dryair" +state real biog3_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_o_a01" "biog3_o, aerosol bin 01" "ug/kg-dryair" +state real biog4_o_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_o_a01" "biog4_o, aerosol bin 01" "ug/kg-dryair" state real cl_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a01" "Chloride, aerosol bin 01" "ug/kg-dryair" state real msa_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a01" "MSA, aerosol bin 01" "ug/kg-dryair" state real co3_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a01" "Carbonate, aerosol bin 01" "ug/kg-dryair" @@ -882,6 +1254,98 @@ state real water_a01 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a01 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a01" "Number, aerosol bin 01" "#/kg-dryair" state real so4_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a02" "Sulfate, aerosol bin 02" "ug/kg-dryair" state real no3_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a02" "Nitrate, aerosol bin 02" "ug/kg-dryair" +state real aro1_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a02" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a02" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a02" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a02" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a02" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a02" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a02" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a02" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a02" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a02" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a02" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a02" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a02" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a02" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a02" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a02" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a02" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a02" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a02" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a02" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a02" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a02" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a02" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a02" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a02" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a02" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a02" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a02" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a02" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a02" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a02" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a02" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a02" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a02" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a02" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a02" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a02" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a02" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a02" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a02" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a02" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a02" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a02" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a02" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a02" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a02" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a02" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a02" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a02" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a02" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a02" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a02" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a02" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a02" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a02" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a02" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a02" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a02" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a02" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a02" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a02" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a02" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a02" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a02" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a02" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a02" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a02" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a02" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a02" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a02" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a02" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a02" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a02" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a02" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a02" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a02" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real ant1_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_c_a02" "ant1_c, aerosol bin 01" "ug/kg-dryair" +state real ant2_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_c_a02" "ant2_c, aerosol bin 01" "ug/kg-dryair" +state real ant3_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_c_a02" "ant3_c, aerosol bin 01" "ug/kg-dryair" +state real ant4_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_c_a02" "ant4_c, aerosol bin 01" "ug/kg-dryair" +state real ant1_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_o_a02" "ant1_o, aerosol bin 01" "ug/kg-dryair" +state real ant2_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_o_a02" "ant2_o, aerosol bin 01" "ug/kg-dryair" +state real ant3_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_o_a02" "ant3_o, aerosol bin 01" "ug/kg-dryair" +state real ant4_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_o_a02" "ant4_o, aerosol bin 01" "ug/kg-dryair" +state real biog1_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_c_a02" "biog1_c, aerosol bin 01" "ug/kg-dryair" +state real biog2_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_c_a02" "biog2_c, aerosol bin 01" "ug/kg-dryair" +state real biog3_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_c_a02" "biog3_c, aerosol bin 01" "ug/kg-dryair" +state real biog4_c_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_c_a02" "biog4_c, aerosol bin 01" "ug/kg-dryair" +state real biog1_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_o_a02" "biog1_o, aerosol bin 01" "ug/kg-dryair" +state real biog2_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_o_a02" "biog2_o, aerosol bin 01" "ug/kg-dryair" +state real biog3_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_o_a02" "biog3_o, aerosol bin 01" "ug/kg-dryair" +state real biog4_o_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_o_a02" "biog4_o, aerosol bin 01" "ug/kg-dryair" state real cl_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a02" "Chloride, aerosol bin 02" "ug/kg-dryair" state real msa_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a02" "MSA, aerosol bin 02" "ug/kg-dryair" state real co3_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a02" "Carbonate, aerosol bin 02" "ug/kg-dryair" @@ -896,6 +1360,98 @@ state real water_a02 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a02 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a02" "Number, aerosol bin 02" "#/kg-dryair" state real so4_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a03" "Sulfate, aerosol bin 03" "ug/kg-dryair" state real no3_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a03" "Nitrate, aerosol bin 03" "ug/kg-dryair" +state real aro1_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a03" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a03" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a03" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a03" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a03" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a03" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a03" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a03" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a03" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a03" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a03" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a03" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a03" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a03" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a03" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a03" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a03" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a03" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a03" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a03" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a03" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a03" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a03" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a03" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a03" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a03" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a03" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a03" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a03" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a03" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a03" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a03" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a03" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a03" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a03" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a03" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a03" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a03" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a03" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a03" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a03" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a03" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a03" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a03" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a03" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a03" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a03" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a03" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a03" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a03" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a03" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a03" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a03" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a03" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a03" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a03" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a03" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a03" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a03" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a03" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a03" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a03" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a03" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a03" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a03" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a03" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a03" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a03" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a03" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a03" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a03" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a03" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a03" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a03" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a03" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a03" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real ant1_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_c_a03" "ant1_c, aerosol bin 01" "ug/kg-dryair" +state real ant2_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_c_a03" "ant2_c, aerosol bin 01" "ug/kg-dryair" +state real ant3_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_c_a03" "ant3_c, aerosol bin 01" "ug/kg-dryair" +state real ant4_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_c_a03" "ant4_c, aerosol bin 01" "ug/kg-dryair" +state real ant1_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_o_a03" "ant1_o, aerosol bin 01" "ug/kg-dryair" +state real ant2_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_o_a03" "ant2_o, aerosol bin 01" "ug/kg-dryair" +state real ant3_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_o_a03" "ant3_o, aerosol bin 01" "ug/kg-dryair" +state real ant4_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_o_a03" "ant4_o, aerosol bin 01" "ug/kg-dryair" +state real biog1_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_c_a03" "biog1_c, aerosol bin 01" "ug/kg-dryair" +state real biog2_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_c_a03" "biog2_c, aerosol bin 01" "ug/kg-dryair" +state real biog3_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_c_a03" "biog3_c, aerosol bin 01" "ug/kg-dryair" +state real biog4_c_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_c_a03" "biog4_c, aerosol bin 01" "ug/kg-dryair" +state real biog1_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_o_a03" "biog1_o, aerosol bin 01" "ug/kg-dryair" +state real biog2_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_o_a03" "biog2_o, aerosol bin 01" "ug/kg-dryair" +state real biog3_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_o_a03" "biog3_o, aerosol bin 01" "ug/kg-dryair" +state real biog4_o_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_o_a03" "biog4_o, aerosol bin 01" "ug/kg-dryair" state real cl_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a03" "Chloride, aerosol bin 03" "ug/kg-dryair" state real msa_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a03" "MSA, aerosol bin 03" "ug/kg-dryair" state real co3_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a03" "Carbonate, aerosol bin 03" "ug/kg-dryair" @@ -910,6 +1466,98 @@ state real water_a03 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a03 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a03" "Number, aerosol bin 03" "#/kg-dryair" state real so4_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a04" "Sulfate, aerosol bin 04" "ug/kg-dryair" state real no3_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a04" "Nitrate, aerosol bin 04" "ug/kg-dryair" +state real aro1_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a04" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a04" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a04" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a04" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a04" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a04" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a04" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a04" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a04" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a04" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a04" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a04" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a04" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a04" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a04" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a04" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a04" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a04" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a04" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a04" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a04" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a04" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a04" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a04" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a04" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a04" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a04" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a04" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a04" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a04" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a04" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a04" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a04" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a04" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a04" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a04" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a04" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a04" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a04" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a04" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a04" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a04" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a04" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a04" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a04" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a04" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a04" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a04" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a04" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a04" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a04" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a04" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a04" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a04" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a04" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a04" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a04" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a04" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a04" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a04" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a04" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a04" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a04" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a04" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a04" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a04" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a04" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a04" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a04" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a04" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a04" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a04" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a04" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a04" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a04" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a04" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real ant1_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_c_a04" "ant1_c, aerosol bin 01" "ug/kg-dryair" +state real ant2_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_c_a04" "ant2_c, aerosol bin 01" "ug/kg-dryair" +state real ant3_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_c_a04" "ant3_c, aerosol bin 01" "ug/kg-dryair" +state real ant4_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_c_a04" "ant4_c, aerosol bin 01" "ug/kg-dryair" +state real ant1_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant1_o_a04" "ant1_o, aerosol bin 01" "ug/kg-dryair" +state real ant2_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant2_o_a04" "ant2_o, aerosol bin 01" "ug/kg-dryair" +state real ant3_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant3_o_a04" "ant3_o, aerosol bin 01" "ug/kg-dryair" +state real ant4_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ant4_o_a04" "ant4_o, aerosol bin 01" "ug/kg-dryair" +state real biog1_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_c_a04" "biog1_c, aerosol bin 01" "ug/kg-dryair" +state real biog2_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_c_a04" "biog2_c, aerosol bin 01" "ug/kg-dryair" +state real biog3_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_c_a04" "biog3_c, aerosol bin 01" "ug/kg-dryair" +state real biog4_c_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_c_a04" "biog4_c, aerosol bin 01" "ug/kg-dryair" +state real biog1_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog1_o_a04" "biog1_o, aerosol bin 01" "ug/kg-dryair" +state real biog2_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog2_o_a04" "biog2_o, aerosol bin 01" "ug/kg-dryair" +state real biog3_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog3_o_a04" "biog3_o, aerosol bin 01" "ug/kg-dryair" +state real biog4_o_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "biog4_o_a04" "biog4_o, aerosol bin 01" "ug/kg-dryair" state real cl_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a04" "Chloride, aerosol bin 04" "ug/kg-dryair" state real msa_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a04" "MSA, aerosol bin 04" "ug/kg-dryair" state real co3_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a04" "Carbonate, aerosol bin 04" "ug/kg-dryair" @@ -924,6 +1572,82 @@ state real water_a04 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a04 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a04" "Number, aerosol bin 04" "#/kg-dryair" state real so4_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a05" "Sulfate, aerosol bin 05" "ug/kg-dryair" state real no3_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a05" "Nitrate, aerosol bin 05" "ug/kg-dryair" +state real aro1_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a05" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a05" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a05" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a05" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a05" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a05" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a05" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a05" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a05" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a05" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a05" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a05" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a05" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a05" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a05" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a05" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a05" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a05" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a05" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a05" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a05" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a05" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a05" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a05" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a05" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a05" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a05" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a05" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a05" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a05" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a05" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a05" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a05" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a05" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a05" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a05" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a05" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a05" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a05" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a05" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a05" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a05" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a05" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a05" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a05" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a05" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a05" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a05" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a05" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a05" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a05" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a05" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a05" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a05" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a05" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a05" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a05" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a05" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a05" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a05" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a05" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a05" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a05" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a05" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a05" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a05" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a05" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a05" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a05" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a05" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a05" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a05" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a05" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a05" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a05" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a05" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" state real cl_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a05" "Chloride, aerosol bin 05" "ug/kg-dryair" state real msa_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a05" "MSA, aerosol bin 05" "ug/kg-dryair" state real co3_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a05" "Carbonate, aerosol bin 05" "ug/kg-dryair" @@ -938,6 +1662,82 @@ state real water_a05 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a05 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a05" "Number, aerosol bin 05" "#/kg-dryair" state real so4_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a06" "Sulfate, aerosol bin 06" "ug/kg-dryair" state real no3_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a06" "Nitrate, aerosol bin 06" "ug/kg-dryair" +state real aro1_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a06" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a06" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a06" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a06" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a06" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a06" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a06" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a06" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a06" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a06" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a06" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a06" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a06" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a06" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a06" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a06" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a06" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a06" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a06" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a06" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a06" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a06" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a06" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a06" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a06" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a06" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a06" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a06" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a06" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a06" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a06" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a06" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a06" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a06" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a06" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a06" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a06" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a06" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a06" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a06" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a06" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a06" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a06" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a06" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a06" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a06" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a06" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a06" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a06" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a06" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a06" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a06" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a06" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a06" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a06" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a06" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a06" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a06" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a06" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a06" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a06" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a06" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a06" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a06" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a06" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a06" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a06" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a06" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a06" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a06" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a06" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a06" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a06" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a06" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a06" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a06" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" state real cl_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a06" "Chloride, aerosol bin 06" "ug/kg-dryair" state real msa_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a06" "MSA, aerosol bin 06" "ug/kg-dryair" state real co3_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a06" "Carbonate, aerosol bin 06" "ug/kg-dryair" @@ -952,6 +1752,82 @@ state real water_a06 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a06 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a06" "Number, aerosol bin 06" "#/kg-dryair" state real so4_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a07" "Sulfate, aerosol bin 07" "ug/kg-dryair" state real no3_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a07" "Nitrate, aerosol bin 07" "ug/kg-dryair" +state real aro1_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a07" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a07" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a07" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a07" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a07" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a07" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a07" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a07" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a07" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a07" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a07" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a07" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a07" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a07" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a07" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a07" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a07" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a07" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a07" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a07" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a07" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a07" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a07" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a07" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a07" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a07" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a07" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a07" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a07" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a07" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a07" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a07" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a07" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a07" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a07" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a07" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a07" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a07" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a07" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a07" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a07" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a07" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a07" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a07" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a07" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a07" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a07" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a07" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a07" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a07" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a07" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a07" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a07" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a07" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a07" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a07" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a07" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a07" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a07" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a07" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a07" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a07" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a07" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a07" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a07" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a07" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a07" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a07" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a07" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a07" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a07" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a07" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a07" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a07" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a07" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a07" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" state real cl_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a07" "Chloride, aerosol bin 07" "ug/kg-dryair" state real msa_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a07" "MSA, aerosol bin 07" "ug/kg-dryair" state real co3_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a07" "Carbonate, aerosol bin 07" "ug/kg-dryair" @@ -966,6 +1842,82 @@ state real water_a07 ikjftb chem 1 - irhusdf=(bdy_inter state real num_a07 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "num_a07" "Number, aerosol bin 07" "#/kg-dryair" state real so4_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "so4_a08" "Sulfate, aerosol bin 08" "ug/kg-dryair" state real no3_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "no3_a08" "Nitrate, aerosol bin 08" "ug/kg-dryair" +state real aro1_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro1_a08" "ARO1, aerosol bin 01" "ug/kg-dryair" +state real aro2_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "aro2_a08" "ARO2, aerosol bin 01" "ug/kg-dryair" +state real alk1_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "alk1_a08" "ALK1, aerosol bin 01" "ug/kg-dryair" +state real ole1_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "ole1_a08" "OLE1, aerosol bin 01" "ug/kg-dryair" +state real api1_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api1_a08" "API1, aerosol bin 01" "ug/kg-dryair" +state real api2_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "api2_a08" "API2, aerosol bin 01" "ug/kg-dryair" +state real lim1_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim1_a08" "LIM1, aerosol bin 01" "ug/kg-dryair" +state real lim2_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "lim2_a08" "LIM2, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_c_a08" "pcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_c_a08" "pcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_c_a08" "pcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_c_a08" "pcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_c_a08" "pcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_c_a08" "pcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_c_a08" "pcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_c_a08" "pcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_c_a08" "pcg9_b_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_b_o_a08" "pcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_b_o_a08" "pcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_b_o_a08" "pcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_b_o_a08" "pcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_b_o_a08" "pcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_b_o_a08" "pcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_b_o_a08" "pcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_b_o_a08" "pcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_b_o_a08" "pcg9_b_o, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_c_a08" "pcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_c_a08" "pcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_c_a08" "pcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_c_a08" "pcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_c_a08" "pcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_c_a08" "pcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_c_a08" "pcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_c_a08" "pcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_c_a08" "pcg9_f_c, aerosol bin 01" "ug/kg-dryair" +state real pcg1_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg1_f_o_a08" "pcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg2_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg2_f_o_a08" "pcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg3_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg3_f_o_a08" "pcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg4_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg4_f_o_a08" "pcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg5_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg5_f_o_a08" "pcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg6_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg6_f_o_a08" "pcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg7_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg7_f_o_a08" "pcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg8_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg8_f_o_a08" "pcg8_f_o, aerosol bin 01" "ug/kg-dryair" +state real pcg9_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "pcg9_f_o_a08" "pcg9_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_c_a08" "opcg1_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_c_a08" "opcg2_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_c_a08" "opcg3_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_c_a08" "opcg4_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_c_a08" "opcg5_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_c_a08" "opcg6_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_c_a08" "opcg7_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_c_a08" "opcg8_b_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_b_o_a08" "opcg1_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_b_o_a08" "opcg2_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_b_o_a08" "opcg3_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_b_o_a08" "opcg4_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_b_o_a08" "opcg5_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_b_o_a08" "opcg6_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_b_o_a08" "opcg7_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_b_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_b_o_a08" "opcg8_b_o, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_c_a08" "opcg1_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_c_a08" "opcg2_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_c_a08" "opcg3_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_c_a08" "opcg4_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_c_a08" "opcg5_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_c_a08" "opcg6_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_c_a08" "opcg7_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_c_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_c_a08" "opcg8_f_c, aerosol bin 01" "ug/kg-dryair" +state real opcg1_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg1_f_o_a08" "opcg1_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg2_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg2_f_o_a08" "opcg2_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg3_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg3_f_o_a08" "opcg3_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg4_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg4_f_o_a08" "opcg4_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg5_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg5_f_o_a08" "opcg5_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg6_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg6_f_o_a08" "opcg6_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg7_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg7_f_o_a08" "opcg7_f_o, aerosol bin 01" "ug/kg-dryair" +state real opcg8_f_o_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "opcg8_f_o_a08" "opcg8_f_o, aerosol bin 01" "ug/kg-dryair" state real cl_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "cl_a08" "Chloride, aerosol bin 08" "ug/kg-dryair" state real msa_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "msa_a08" "MSA, aerosol bin 08" "ug/kg-dryair" state real co3_a08 ikjftb chem 1 - irhusdf=(bdy_interp:dt) "co3_a08" "Carbonate, aerosol bin 08" "ug/kg-dryair" @@ -1208,12 +2160,12 @@ rconfig integer chem_in_opt namelist,chem max_domains rconfig integer phot_opt namelist,chem max_domains 0 rh "phot_opt" "" "" rconfig integer gas_drydep_opt namelist,chem max_domains 1 rh "gas_drydep_opt" "" "" rconfig integer aer_drydep_opt namelist,chem max_domains 1 rh "aer_drydep_opt" "" "" -rconfig integer diagnostic_chem namelist,chem max_domains 1 rh "diagnostic_chem" "" "" -rconfig integer aer_aerodynres_opt namelist,chem max_domains 1 rh "aer_aerodynres_opt" "" "" +rconfig integer diagnostic_chem namelist,chem max_domains 1 rh "diagnostic_chem" "" "" +rconfig integer aer_aerodynres_opt namelist,chem max_domains 1 rh "aer_aerodynres_opt" "" "" rconfig integer emiss_opt namelist,chem max_domains 4 rh "emiss_opt" "" "" -rconfig integer dust_opt namelist,chem 1 0 rh "dust_opt" "" "" -rconfig integer dmsemis_opt namelist,chem 1 0 rh "dmsemis_opt" "" "" -rconfig integer seas_opt namelist,chem 1 0 rh "seas_opt" "" "" +rconfig integer dust_opt namelist,chem 1 0 rh "dust_opt" "" "" +rconfig integer dmsemis_opt namelist,chem 1 0 rh "dmsemis_opt" "" "" +rconfig integer seas_opt namelist,chem 1 0 rh "seas_opt" "" "" rconfig integer bio_emiss_opt namelist,chem max_domains 0 rh "bio_emiss_opt" "" "" rconfig integer biomass_burn_opt namelist,chem max_domains 0 rh "biomass_burn_opt" "" "" rconfig integer plumerisefire_frq namelist,chem max_domains 180 rh "plumerisefire_frq" "" "" @@ -1242,9 +2194,9 @@ package cbmz chem_opt==5 - chem:so2,sulf package cbmz_bb chem_opt==6 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2 package cbmz_mosaic_4bin chem_opt==7 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04 #Normal cbmz_mosaic_8bin package -package cbmz_mosaic_8bin chem_opt==8 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08 +#package cbmz_mosaic_8bin chem_opt==8 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08 #Alternative cbmz_mosaic_8bin with dust chemistry (ca & co aerosol) -#package cbmz_mosaic_8bin chem_opt==8 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08,ca_a01,ca_a02,ca_a03,ca_a04,ca_a05,ca_a06,ca_a07,ca_a08,co3_a01,co3_a02,co3_a03,co3_a04,co3_a05,co3_a06,co3_a07,co3_a08 +package cbmz_mosaic_8bin chem_opt==8 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08,ca_a01,ca_a02,ca_a03,ca_a04,ca_a05,ca_a06,ca_a07,ca_a08,co3_a01,co3_a02,co3_a03,co3_a04,co3_a05,co3_a06,co3_a07,co3_a08 package cbmz_mosaic_4bin_aq chem_opt==9 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_cw01,no3_cw01,cl_cw01,nh4_cw01,na_cw01,oin_cw01,oc_cw01,bc_cw01,num_cw01,so4_cw02,no3_cw02,cl_cw02,nh4_cw02,na_cw02,oin_cw02,oc_cw02,bc_cw02,num_cw02,so4_cw03,no3_cw03,cl_cw03,nh4_cw03,na_cw03,oin_cw03,oc_cw03,bc_cw03,num_cw03,so4_cw04,no3_cw04,cl_cw04,nh4_cw04,na_cw04,oin_cw04,oc_cw04,bc_cw04,num_cw04 package cbmz_mosaic_8bin_aq chem_opt==10 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08,so4_cw01,no3_cw01,cl_cw01,nh4_cw01,na_cw01,oin_cw01,oc_cw01,bc_cw01,num_cw01,so4_cw02,no3_cw02,cl_cw02,nh4_cw02,na_cw02,oin_cw02,oc_cw02,bc_cw02,num_cw02,so4_cw03,no3_cw03,cl_cw03,nh4_cw03,na_cw03,oin_cw03,oc_cw03,bc_cw03,num_cw03,so4_cw04,no3_cw04,cl_cw04,nh4_cw04,na_cw04,oin_cw04,oc_cw04,bc_cw04,num_cw04,so4_cw05,no3_cw05,cl_cw05,nh4_cw05,na_cw05,oin_cw05,oc_cw05,bc_cw05,num_cw05,so4_cw06,no3_cw06,cl_cw06,nh4_cw06,na_cw06,oin_cw06,oc_cw06,bc_cw06,num_cw06,so4_cw07,no3_cw07,cl_cw07,nh4_cw07,na_cw07,oin_cw07,oc_cw07,bc_cw07,num_cw07,so4_cw08,no3_cw08,cl_cw08,nh4_cw08,na_cw08,oin_cw08,oc_cw08,bc_cw08,num_cw08 @@ -1254,6 +2206,12 @@ package chem_tracer chem_opt==13 - chem:so2,no,a package chem_trace2 chem_opt==14 - chem:tracer_1 package chem_trace_ens chem_opt==15 - chem:tracer_1,tracer_2,tracer_3,tracer_4,tracer_5,tracer_6,tracer_7,tracer_8,tracer_9,tracer_10,tracer_11,tracer_12,tracer_13,tracer_14,tracer_15,tracer_16,tracer_17,tracer_18,tracer_19,tracer_20,tracer_ens +package cbmzsorg chem_opt==30 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4aj,so4ai,nh4aj,nh4ai,no3aj,no3ai,naaj,naai,claj,clai,orgaro1j,orgaro1i,orgaro2j,orgaro2i,orgalk1j,orgalk1i,orgole1j,orgole1i,orgba1j,orgba1i,orgba2j,orgba2i,orgba3j,orgba3i,orgba4j,orgba4i,orgpaj,orgpai,ecj,eci,p25j,p25i,antha,seas,soila,nu0,ac0,corn +package cbmz_mosaic_dms_4bin chem_opt==31 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,dms,msa,dmso,dmso2,ch3so2h,ch3sch2oo,ch3so2,ch3so3,ch3so2oo,ch3so2ch2oo,mtf,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,ca_a01,ca_a02,ca_a03,ca_a04,co3_a01,co3_a02,co3_a03,co3_a04,msa_a01,msa_a02,msa_a03,msa_a04 +package cbmz_mosaic_dms_4bin_aq chem_opt==32 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,dms,msa,dmso,dmso2,ch3so2h,ch3sch2oo,ch3so2,ch3so3,ch3so2oo,ch3so2ch2oo,mtf,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,ca_a01,ca_a02,ca_a03,ca_a04,co3_a01,co3_a02,co3_a03,co3_a04,msa_a01,msa_a02,msa_a03,msa_a04,so4_cw01,no3_cw01,cl_cw01,nh4_cw01,na_cw01,oin_cw01,oc_cw01,bc_cw01,num_cw01,so4_cw02,no3_cw02,cl_cw02,nh4_cw02,na_cw02,oin_cw02,oc_cw02,bc_cw02,num_cw02,so4_cw03,no3_cw03,cl_cw03,nh4_cw03,na_cw03,oin_cw03,oc_cw03,bc_cw03,num_cw03,so4_cw04,no3_cw04,cl_cw04,nh4_cw04,na_cw04,oin_cw04,oc_cw04,bc_cw04,num_cw04,ca_cw01,ca_cw02,ca_cw03,ca_cw04,co3_cw01,co3_cw02,co3_cw03,co3_cw04,msa_cw01,msa_cw02,msa_cw03,msa_cw04 +package cbmz_mosaic_dms_8bin chem_opt==33 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,dms,msa,dmso,dmso2,ch3so2h,ch3sch2oo,ch3so2,ch3so3,ch3so2oo,ch3so2ch2oo,mtf,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08,ca_a01,ca_a02,ca_a03,ca_a04,ca_a05,ca_a06,ca_a07,ca_a08,co3_a01,co3_a02,co3_a03,co3_a04,co3_a05,co3_a06,co3_a07,co3_a08,msa_a01,msa_a02,msa_a03,msa_a04,msa_a05,msa_a06,msa_a07,msa_a08 +package cbmz_mosaic_dms_8bin_aq chem_opt==34 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,dms,msa,dmso,dmso2,ch3so2h,ch3sch2oo,ch3so2,ch3so3,ch3so2oo,ch3so2ch2oo,mtf,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,num_a08,ca_a01,ca_a02,ca_a03,ca_a04,ca_a05,ca_a06,ca_a07,ca_a08,co3_a01,co3_a02,co3_a03,co3_a04,co3_a05,co3_a06,co3_a07,co3_a08,msa_a01,msa_a02,msa_a03,msa_a04,msa_a05,msa_a06,msa_a07,msa_a08,so4_cw01,no3_cw01,cl_cw01,nh4_cw01,na_cw01,oin_cw01,oc_cw01,bc_cw01,num_cw01,so4_cw02,no3_cw02,cl_cw02,nh4_cw02,na_cw02,oin_cw02,oc_cw02,bc_cw02,num_cw02,so4_cw03,no3_cw03,cl_cw03,nh4_cw03,na_cw03,oin_cw03,oc_cw03,bc_cw03,num_cw03,so4_cw04,no3_cw04,cl_cw04,nh4_cw04,na_cw04,oin_cw04,oc_cw04,bc_cw04,num_cw04,so4_cw05,no3_cw05,cl_cw05,nh4_cw05,na_cw05,oin_cw05,oc_cw05,bc_cw05,num_cw05,so4_cw06,no3_cw06,cl_cw06,nh4_cw06,na_cw06,oin_cw06,oc_cw06,bc_cw06,num_cw06,so4_cw07,no3_cw07,cl_cw07,nh4_cw07,na_cw07,oin_cw07,oc_cw07,bc_cw07,num_cw07,so4_cw08,no3_cw08,cl_cw08,nh4_cw08,na_cw08,oin_cw08,oc_cw08,bc_cw08,num_cw08,ca_cw01,ca_cw02,ca_cw03,ca_cw04,ca_cw05,ca_cw06,ca_cw07,ca_cw08,co3_cw01,co3_cw02,co3_cw03,co3_cw04,co3_cw05,co3_cw06,co3_cw07,co3_cw08,msa_cw01,msa_cw02,msa_cw03,msa_cw04,msa_cw05,msa_cw06,msa_cw07,msa_cw08 +package cbmzsorg_aq chem_opt==35 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2,so4aj,so4ai,nh4aj,nh4ai,no3aj,no3ai,naaj,naai,claj,clai,orgaro1j,orgaro1i,orgaro2j,orgaro2i,orgalk1j,orgalk1i,orgole1j,orgole1i,orgba1j,orgba1i,orgba2j,orgba2i,orgba3j,orgba3i,orgba4j,orgba4i,orgpaj,orgpai,ecj,eci,p25j,p25i,antha,seas,soila,nu0,ac0,corn,so4cwj,so4cwi,nh4cwj,nh4cwi,no3cwj,no3cwi,nacwj,nacwi,clcwj,clcwi,orgaro1cwj,orgaro1cwi,orgaro2cwj,orgaro2cwi,orgalk1cwj,orgalk1cwi,orgole1cwj,orgole1cwi,orgba1cwj,orgba1cwi,orgba2cwj,orgba2cwi,orgba3cwj,orgba3cwi,orgba4cwj,orgba4cwi,orgpacwj,orgpacwi,eccwj,eccwi,p25cwj,p25cwi,anthcw,seascw,soilcw,nu0cw,ac0cw,corncw #cms++ package radm2_kpp chem_opt==101 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,paa,ora1,ora2,nh3,n2o5,no3,pan,hc3,hc5,hc8,eth,co,ol2,olt,oli,tol,xyl,aco3,tpan,hono,hno4,ket,gly,mgly,dcb,onit,csl,iso,co2,ch4,ho,ho2 @@ -1279,6 +2237,19 @@ package mozcart_kpp chem_opt==112 - chem:o3,o1 # KPP mechanism from CBMZ package cbmz_bb_kpp chem_opt==120 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,ch4,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,isopo2 + + +#cbmz_mosaic_kpp (chem_opt=170) is for mosaic runs with sorgam soa species: coded by Manish Shrivastava on 12/8/2009 +package cbmz_mosaic_kpp chem_opt==170 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,ora1,ora2,nh3,n2o5,no3,pan,eth,co,ol2,olt,oli,tol,xyl,hono,hno4,ket,mgly,onit,csl,iso,ho,ho2,hcl,ch3o2,ethp,ch3oh,c2h5oh,par,to2,cro,open,op3,c2o3,ro2,ano2,nap,xo2,xpar,isoprd,isopp,isopn,ch4,aro1,aro2,alk1,ole1,api1,api2,lim1,lim2,api,lim,isopo2,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,aro1_a01,aro2_a01,alk1_a01,ole1_a01,api1_a01,api2_a01,lim1_a01,lim2_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,aro1_a02,aro2_a02,alk1_a02,ole1_a02,api1_a02,api2_a02,lim1_a02,lim2_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,aro1_a03,aro2_a03,alk1_a03,ole1_a03,api1_a03,api2_a03,lim1_a03,lim2_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,aro1_a04,aro2_a04,alk1_a04,ole1_a04,api1_a04,api2_a04,lim1_a04,lim2_a04,num_a04,so4_a05,no3_a05,cl_a05,nh4_a05,na_a05,oin_a05,oc_a05,bc_a05,hysw_a05,water_a05,aro1_a05,aro2_a05,alk1_a05,ole1_a05,api1_a05,api2_a05,lim1_a05,lim2_a05,num_a05,so4_a06,no3_a06,cl_a06,nh4_a06,na_a06,oin_a06,oc_a06,bc_a06,hysw_a06,water_a06,aro1_a06,aro2_a06,alk1_a06,ole1_a06,api1_a06,api2_a06,lim1_a06,lim2_a06,num_a06,so4_a07,no3_a07,cl_a07,nh4_a07,na_a07,oin_a07,oc_a07,bc_a07,hysw_a07,water_a07,aro1_a07,aro2_a07,alk1_a07,ole1_a07,api1_a07,api2_a07,lim1_a07,lim2_a07,num_a07,so4_a08,no3_a08,cl_a08,nh4_a08,na_a08,oin_a08,oc_a08,bc_a08,hysw_a08,water_a08,aro1_a08,aro2_a08,alk1_a08,ole1_a08,api1_a08,api2_a08,lim1_a08,lim2_a08,num_a08,ca_a01,ca_a02,ca_a03,ca_a04,ca_a05,ca_a06,ca_a07,ca_a08,co3_a01,co3_a02,co3_a03,co3_a04,co3_a05,co3_a06,co3_a07,co3_a08 + + + +#SAPRCNOV new package, automatically created using diff_mechanisSpc_wrfRegistry.m script (pablo-saide@uiowa.edu) +package saprc99_kpp chem_opt==195 - chem:o3,h2o2,no,no2,no3,n2o5,hono,hno3,hno4,so2,h2so4,co,hcho,ccho,rcho,acet,mek,hcooh,meoh,etoh,cco_oh,rco_oh,gly,mgly,bacl,cres,bald,isoprod,methacro,mvk,prod2,dcb1,dcb2,dcb3,ethene,isoprene,c2h6,c3h8,c2h2,c3h6,alk3,alk4,alk5,aro1,aro2,ole1,ole2,terp,rno3,nphe,phen,pan,pan2,pbzn,ma_pan,co2,cco_ooh,rco_o2,rco_ooh,xn,xc,ho,ho2,c_o2,cooh,rooh,ro2_r,r2o2,ro2_n,cco_o2,bzco_o2,ma_rco3,nh3,hcl,ch4 + +package saprc99_mosaic_4bin_vbs2_kpp chem_opt==198 - chem:o3,h2o2,no,no2,no3,n2o5,hono,hno3,hno4,so2,h2so4,co,hcho,ccho,rcho,acet,mek,hcooh,meoh,etoh,cco_oh,rco_oh,gly,mgly,bacl,cres,bald,isoprod,methacro,mvk,prod2,dcb1,dcb2,dcb3,ethene,isoprene,c2h6,c3h8,c2h2,c3h6,alk3,alk4,alk5,aro1,aro2,ole1,ole2,terp,rno3,nphe,phen,pan,pan2,pbzn,ma_pan,co2,cco_ooh,rco_o2,rco_ooh,xn,xc,ho,ho2,c_o2,cooh,rooh,ro2_r,r2o2,ro2_n,cco_o2,bzco_o2,ma_rco3,sesq,pcg1_b_c,pcg2_b_c,pcg1_b_o,pcg2_b_o,opcg1_b_c,opcg1_b_o,pcg1_f_c,pcg2_f_c,pcg1_f_o,pcg2_f_o,opcg1_f_c,opcg1_f_o,psd1,psd2,nh3,hcl,nume,den,ant1_c,ant1_o,biog1_c,biog1_o,ch4,so4_a01,no3_a01,cl_a01,nh4_a01,na_a01,oin_a01,oc_a01,bc_a01,hysw_a01,water_a01,pcg1_b_c_a01,pcg2_b_c_a01,pcg1_b_o_a01,pcg2_b_o_a01,opcg1_b_c_a01,opcg1_b_o_a01,pcg1_f_c_a01,pcg2_f_c_a01,pcg1_f_o_a01,pcg2_f_o_a01,opcg1_f_c_a01,opcg1_f_o_a01,ant1_c_a01,ant1_o_a01,biog1_c_a01,biog1_o_a01,num_a01,so4_a02,no3_a02,cl_a02,nh4_a02,na_a02,oin_a02,oc_a02,bc_a02,hysw_a02,water_a02,pcg1_b_c_a02,pcg2_b_c_a02,pcg1_b_o_a02,pcg2_b_o_a02,opcg1_b_c_a02,opcg1_b_o_a02,pcg1_f_c_a02,pcg2_f_c_a02,pcg1_f_o_a02,pcg2_f_o_a02,opcg1_f_c_a02,opcg1_f_o_a02,ant1_c_a02,ant1_o_a02,biog1_c_a02,biog1_o_a02,num_a02,so4_a03,no3_a03,cl_a03,nh4_a03,na_a03,oin_a03,oc_a03,bc_a03,hysw_a03,water_a03,pcg1_b_c_a03,pcg2_b_c_a03,pcg1_b_o_a03,pcg2_b_o_a03,opcg1_b_c_a03,opcg1_b_o_a03,pcg1_f_c_a03,pcg2_f_c_a03,pcg1_f_o_a03,pcg2_f_o_a03,opcg1_f_c_a03,opcg1_f_o_a03,ant1_c_a03,ant1_o_a03,biog1_c_a03,biog1_o_a03,num_a03,so4_a04,no3_a04,cl_a04,nh4_a04,na_a04,oin_a04,oc_a04,bc_a04,hysw_a04,water_a04,pcg1_b_c_a04,pcg2_b_c_a04,pcg1_b_o_a04,pcg2_b_o_a04,opcg1_b_c_a04,opcg1_b_o_a04,pcg1_f_c_a04,pcg2_f_c_a04,pcg1_f_o_a04,pcg2_f_o_a04,opcg1_f_c_a04,opcg1_f_o_a04,ant1_c_a04,ant1_o_a04,biog1_c_a04,biog1_o_a04,num_a04,ca_a01,ca_a02,ca_a03,ca_a04,co3_a01,co3_a02,co3_a03,co3_a04 + + # KPP mechanism from MATCH-MPI Mainz used for global chemistry package nmhc9_kpp chem_opt==200 - chem:o3,h2o2,ch4,op1,hcho,ch3oh,co,hno3,no3,n2o5,hno4,no,no2,isopr,mvk,iso2,isooh,mvko2,mvkooh,ison,aca,acol,hcooh,mpan,naca,pan,pa,paa,mglo,c2h6,eTooh,ald,c3h8,pRooh,acet,acooh,eTo2,pRo2,aco2,c3h6,c3h6ooh,c2h4,c4h10,buooh,mek,mekooh,mEcoco,c3h6o2,c4h9o2,meko2,onit,pRono2,ch3o2,acetol,acetp,aceto2,ch3cooh,c4h9ooh,mEoh,ho,ho2,mEo2,mEo2no2 @@ -1295,17 +2266,17 @@ package gocartradm2 chem_opt==303 - chem:so2 package chem_vash chem_opt==400 - chem:vash_1,vash_2,vash_3,vash_4,vash_5,vash_6,vash_7,vash_8,vash_9,vash_10 # dust only (per AFWA request) package dust chem_opt==401 - chem:dust_1,dust_2,dust_3,dust_4,dust_5 - #emission package definitions # package eradm emiss_opt==2 - emis_ant:e_iso,e_so2,e_no,e_co,e_eth,e_hc3,e_hc5,e_hc8,e_xyl,e_ol2,e_olt,e_oli,e_tol,e_csl,e_hcho,e_ald,e_ket,e_ora2,e_nh3 -package eradmsorg emiss_opt==3 - emis_ant:e_iso,e_so2,e_no,e_no2,e_co,e_eth,e_hc3,e_hc5,e_hc8,e_xyl,e_ol2,e_olt,e_oli,e_tol,e_csl,e_hcho,e_ald,e_ket,e_ora2,e_nh3,e_pm25i,e_pm25j,e_pm_10,e_eci,e_ecj,e_orgi,e_orgj,e_so4i,e_so4j,e_no3i,e_no3j,e_naaj,e_naai +package eradmsorg emiss_opt==3 - emis_ant:e_iso,e_so2,e_no,e_no2,e_co,e_eth,e_hc3,e_hc5,e_hc8,e_xyl,e_ol2,e_olt,e_oli,e_tol,e_csl,e_hcho,e_ald,e_ket,e_ora2,e_nh3,e_pm25i,e_pm25j,e_pm_10,e_eci,e_ecj,e_orgi,e_orgj,e_so4i,e_so4j,e_no3i,e_no3j,e_naaj,e_naai,e_orgi_a,e_orgj_a,e_orgi_bb,e_orgj_bb package ecbmz_mosaic emiss_opt==4 - emis_ant:e_iso,e_so2,e_no,e_co,e_eth,e_hc3,e_hc5,e_hc8,e_xyl,e_ol2,e_olt,e_oli,e_tol,e_csl,e_hcho,e_ald,e_ket,e_ora2,e_nh3,e_no2,e_ch3oh,e_c2h5oh,e_pm25i,e_pm25j,e_eci,e_ecj,e_orgi,e_orgj,e_so4i,e_so4j,e_no3i,e_no3j,e_so4c,e_no3c,e_orgc,e_ecc package ecptec emiss_opt==5 - emis_ant:e_iso,e_so2,e_no,e_co,e_eth,e_hc3,e_hc5,e_hc8,e_xyl,e_ol2,e_olt,e_oli,e_tol,e_csl,e_hcho,e_ald,e_ket,e_ora2,e_nh3,e_pm_25,e_pm_10,e_oc,e_sulf,e_bc package gocart_ecptec emiss_opt==6 - emis_ant:e_so2,e_sulf,e_bc,e_oc,e_pm_25,e_pm_10 package mozem emiss_opt==7 - emis_ant:e_co,e_no,e_no2,e_bigalk,e_bigene,e_c2h4,e_c2h5oh,e_c2h6,e_c3h6,e_c3h8,e_ch2o,e_ch3cho,e_ch3coch3,e_ch3oh,e_mek,e_so2,e_toluene,e_nh3,e_isop,e_c10h16 package mozcem emiss_opt==8 - emis_ant:e_co,e_no,e_no2,e_bigalk,e_bigene,e_c2h4,e_c2h5oh,e_c2h6,e_c3h6,e_c3h8,e_ch2o,e_ch3cho,e_ch3coch3,e_ch3oh,e_mek,e_so2,e_toluene,e_nh3,e_isop,e_c10h16,e_pm_10,e_pm_25,e_bc,e_oc,e_sulf package vash emiss_opt==9 - emis_ant:e_vash1,e_vash2,e_vash3,e_vash4,e_vash5,e_vash6,e_vash7,e_vash8,e_vash9,e_vash10 +package esaprcnov emiss_opt==13 - emis_ant:e_so2,e_c2h6,e_c3h8,e_c2h2,e_alk3,e_alk4,e_alk5,e_ethene,e_c3h6,e_ole1,e_ole2,e_aro1,e_aro2,e_hcho,e_ccho,e_rcho,e_acet,e_mek,e_isoprene,e_terp,e_sesq,e_co,e_no,e_no2,e_phen,e_cres,e_meoh,e_gly,e_mgly,e_bacl,e_isoprod,e_methacro,e_mvk,e_prod2,e_ch4,e_bald,e_hcooh,e_cco_oh,e_rco_oh,e_nh3,e_pm25i,e_pm25j,e_eci,e_ecj,e_orgi,e_orgj,e_so4i,e_so4j,e_no3i,e_no3j,e_orgi_a,e_orgj_a,e_orgi_bb,e_orgj_bb # diff --git a/chem/KPP/compile_wkc b/chem/KPP/compile_wkc index 49ad84a05b..24ee5bf47e 100755 --- a/chem/KPP/compile_wkc +++ b/chem/KPP/compile_wkc @@ -43,9 +43,9 @@ cd $KPP_HOME; make; cd $WRFC_ROOT echo "-----------------------------------------" -( cd $WKC_HOME/util/wkc; linker.csh unlink ) +( cd $WKC_HOME/util/wkc; ./linker.csh unlink ) -( cd $WKC_HOME/util/wkc; linker.csh link ) +( cd $WKC_HOME/util/wkc; ./linker.csh link ) #compile the coupler echo compile the coupler @@ -111,7 +111,7 @@ echo $kdir # direct addressing in the decomp subroutine (similar to a code by # Edwin Spee, CWI, Amsterdam) - ( cd ${WKC_HOME}/util/write_decomp; write_decom.csh ${model} ../../.. ) + ( cd ${WKC_HOME}/util/write_decomp; ./write_decom.csh ${model} ../../.. ) end @@ -142,7 +142,7 @@ if ( -e util/run_wkc ) then cd $WRFC_ROOT - chem/KPP/util/wkc/registry_kpp Registry/Registry.EM_CHEM + chem/KPP/util/wkc/registry_kpp -DDA_CORE=0 -DEM_CORE=1 Registry/Registry.EM_CHEM cd $WKC_HOME diff --git a/chem/KPP/inc/cbmz_mosaic/extra_args_to_update_rconst_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/extra_args_to_update_rconst_cbmz_mosaic.inc new file mode 100644 index 0000000000..af4c00c9b5 --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/extra_args_to_update_rconst_cbmz_mosaic.inc @@ -0,0 +1,3 @@ + var(ind_CH3O2),var(ind_ETHP),var(ind_RO2),var(ind_C2O3),var(ind_ANO2), & + var(ind_NAP),var(ind_ISOPP),var(ind_ISOPN),var(ind_ISOPO2),var(ind_XO2), & +! diff --git a/chem/KPP/inc/cbmz_mosaic/extra_args_update_rconst_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/extra_args_update_rconst_cbmz_mosaic.inc new file mode 100644 index 0000000000..3081b13397 --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/extra_args_update_rconst_cbmz_mosaic.inc @@ -0,0 +1,2 @@ +ch3o2,ethp,ro2,c2o3,ano2,nap,isopp,isopn,isopo2,xo2, & +! diff --git a/chem/KPP/inc/cbmz_mosaic/extra_decls_update_rconst_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/extra_decls_update_rconst_cbmz_mosaic.inc new file mode 100644 index 0000000000..ab47fb1ce6 --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/extra_decls_update_rconst_cbmz_mosaic.inc @@ -0,0 +1,2 @@ +REAL(KIND=dp), INTENT(IN) :: ch3o2,ethp,ro2,c2o3,ano2,nap,isopp,isopn,isopo2,xo2 +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_a_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_a_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_a_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_b_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_b_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_b_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_bb.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_bb.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_bb.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_e_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ia_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ia_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ia_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ib_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ib_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ib_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ibu_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ibu_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_ibu_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_l_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_l_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_l_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/cbmz_mosaic/kpp_mechd_u_cbmz_mosaic.inc b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_u_cbmz_mosaic.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/cbmz_mosaic/kpp_mechd_u_cbmz_mosaic.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/extra_args_to_update_rconst_saprc99.inc b/chem/KPP/inc/saprc99/extra_args_to_update_rconst_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/extra_args_to_update_rconst_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/extra_args_update_rconst_saprc99.inc b/chem/KPP/inc/saprc99/extra_args_update_rconst_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/extra_args_update_rconst_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/extra_decls_update_rconst_saprc99.inc b/chem/KPP/inc/saprc99/extra_decls_update_rconst_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/extra_decls_update_rconst_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_a_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_a_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_a_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_b_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_b_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_b_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_e_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_e_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_e_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_ia_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_ia_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_ia_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_ib_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_ib_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_ib_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_ibu_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_ibu_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_ibu_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_l_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_l_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_l_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99/kpp_mechd_u_saprc99.inc b/chem/KPP/inc/saprc99/kpp_mechd_u_saprc99.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99/kpp_mechd_u_saprc99.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_to_update_rconst_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_to_update_rconst_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..c105d056a5 --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_to_update_rconst_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1,3 @@ + var(ind_NUME),var(ind_DEN), & + +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_update_rconst_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_update_rconst_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..4b07deeb50 --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_args_update_rconst_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1,2 @@ +nume,den, & +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_decls_update_rconst_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_decls_update_rconst_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..b6c1a1b39b --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/extra_decls_update_rconst_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1,2 @@ +REAL(KIND=dp), INTENT(IN) :: nume,den +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_a_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_a_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_a_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_b_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_b_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_b_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_e_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_e_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_e_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ia_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ia_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ia_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ib_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ib_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ib_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ibu_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ibu_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_ibu_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_l_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_l_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_l_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_u_saprc99_mosaic_4bin_vbs2.inc b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_u_saprc99_mosaic_4bin_vbs2.inc new file mode 100644 index 0000000000..cdf4cb4feb --- /dev/null +++ b/chem/KPP/inc/saprc99_mosaic_4bin_vbs2/kpp_mechd_u_saprc99_mosaic_4bin_vbs2.inc @@ -0,0 +1 @@ +! diff --git a/chem/KPP/kpp/kpp-2.1/src/gdata.h b/chem/KPP/kpp/kpp-2.1/src/gdata.h index 66ffcb2192..a9dbf1af73 100755 --- a/chem/KPP/kpp/kpp-2.1/src/gdata.h +++ b/chem/KPP/kpp/kpp-2.1/src/gdata.h @@ -36,21 +36,21 @@ #include -#define MAX_EQN 900 /* mz_rs_20050130 */ -#define MAX_SPECIES 400 /* mz_rs_20050130 */ +#define MAX_EQN 1200 /* mz_rs_20050130 */ +#define MAX_SPECIES 500 /* mz_rs_20050130 */ #define MAX_SPNAME 30 #define MAX_IVAL 40 /* MAX_EQNTAG = max length of equation ID in eqn file */ -#define MAX_EQNTAG 12 +#define MAX_EQNTAG 32 /* MAX_K = max length of rate expression in eqn file */ -#define MAX_K 150 +#define MAX_K 400 #define MAX_ATOMS 10 #define MAX_ATNAME 10 #define MAX_ATNR 250 /* made bigger -- JM */ #define MAX_PATH 1024 #define MAX_FILES 20 -#define MAX_EQNLEN 100 +#define MAX_EQNLEN 500 #define NO_CODE -1 #define max( x, y ) (x) > (y) ? (x) : (y) diff --git a/chem/KPP/kpp/kpp-2.1/src/lex.yy.c b/chem/KPP/kpp/kpp-2.1/src/lex.yy.c new file mode 100755 index 0000000000..c33b607325 --- /dev/null +++ b/chem/KPP/kpp/kpp-2.1/src/lex.yy.c @@ -0,0 +1,2405 @@ +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +#include + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +static YY_BUFFER_STATE yy_current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + +typedef unsigned char YY_CHAR; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +typedef int yy_state_type; +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 58 +#define YY_END_OF_BUFFER 59 +static yyconst short int yy_accept[199] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 19, 0, 0, 29, 29, 33, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 5, 7, 7, 0, 0, 57, 57, + 59, 58, 1, 9, 2, 58, 3, 10, 10, 11, + 11, 12, 12, 13, 13, 14, 14, 23, 1, 9, + 21, 23, 19, 22, 20, 18, 3, 25, 24, 30, + 1, 9, 30, 29, 30, 29, 28, 27, 26, 26, + 3, 35, 33, 33, 34, 36, 32, 31, 31, 37, + + 38, 39, 39, 40, 45, 1, 9, 42, 45, 43, + 44, 41, 3, 15, 15, 17, 16, 47, 46, 54, + 54, 53, 52, 49, 48, 50, 50, 51, 5, 1, + 2, 5, 3, 6, 7, 1, 8, 2, 7, 3, + 57, 56, 55, 1, 4, 10, 4, 11, 4, 12, + 4, 13, 4, 14, 4, 19, 18, 24, 29, 29, + 0, 29, 29, 26, 0, 26, 33, 0, 33, 33, + 31, 0, 31, 37, 39, 4, 41, 15, 4, 16, + 46, 54, 4, 52, 48, 50, 4, 5, 1, 4, + 7, 1, 4, 57, 55, 29, 33, 0 + + } ; + +static yyconst int yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 4, 1, 1, 1, 1, 1, + 1, 1, 5, 1, 6, 7, 8, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 10, 11, 12, + 13, 14, 1, 1, 15, 15, 15, 15, 16, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 1, 1, 1, 1, 15, 1, 15, 15, 15, 15, + + 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 17, 1, 18, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst int yy_meta[19] = + { 0, + 1, 2, 3, 4, 5, 5, 1, 1, 6, 1, + 7, 1, 1, 1, 8, 8, 7, 9 + } ; + +static yyconst short int yy_base[237] = + { 0, + 0, 16, 32, 49, 66, 83, 100, 117, 134, 151, + 168, 185, 203, 0, 211, 217, 233, 0, 247, 0, + 255, 0, 270, 287, 305, 0, 322, 339, 0, 0, + 347, 353, 359, 365, 380, 397, 405, 411, 417, 423, + 438, 455, 472, 489, 506, 522, 0, 0, 2, 6, + 88, 842, 80, 842, 842, 73, 842, 0, 72, 0, + 71, 0, 70, 0, 68, 0, 67, 842, 71, 842, + 842, 64, 62, 842, 842, 0, 842, 842, 0, 842, + 63, 842, 55, 5, 55, 533, 842, 842, 0, 545, + 842, 842, 6, 555, 842, 842, 842, 0, 567, 0, + + 842, 0, 54, 842, 842, 59, 842, 842, 51, 842, + 842, 0, 842, 0, 50, 842, 0, 842, 0, 0, + 48, 842, 0, 842, 0, 0, 47, 842, 0, 52, + 0, 40, 0, 842, 0, 45, 842, 0, 38, 0, + 0, 842, 0, 43, 842, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 7, + 33, 16, 0, 0, 32, 30, 21, 20, 22, 0, + 0, 19, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 11, 0, 0, 0, 3, 2, 842, 583, 592, + + 601, 610, 619, 628, 637, 646, 655, 664, 673, 682, + 691, 700, 708, 716, 724, 732, 735, 738, 741, 744, + 747, 755, 758, 766, 769, 772, 780, 783, 786, 794, + 802, 810, 819, 828, 833, 835 + } ; + +static yyconst short int yy_def[237] = + { 0, + 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, + 204, 204, 198, 13, 2, 2, 198, 17, 2, 19, + 2, 21, 205, 205, 198, 25, 206, 206, 2, 2, + 2, 2, 2, 2, 207, 207, 2, 2, 2, 2, + 208, 208, 209, 209, 210, 210, 2, 2, 211, 211, + 198, 198, 198, 198, 198, 198, 198, 212, 212, 213, + 213, 214, 214, 215, 215, 216, 216, 198, 198, 198, + 198, 198, 198, 198, 198, 217, 198, 198, 218, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 219, 198, + 198, 198, 198, 198, 198, 198, 198, 220, 198, 221, + + 198, 222, 222, 198, 198, 198, 198, 198, 198, 198, + 198, 223, 198, 224, 224, 198, 225, 198, 226, 227, + 227, 198, 228, 198, 229, 230, 230, 198, 231, 231, + 231, 231, 231, 198, 232, 232, 198, 232, 232, 232, + 233, 198, 234, 198, 198, 212, 212, 213, 213, 214, + 214, 215, 215, 216, 216, 198, 217, 218, 86, 198, + 235, 198, 86, 219, 198, 219, 198, 236, 198, 94, + 220, 198, 220, 221, 222, 222, 223, 224, 224, 225, + 226, 227, 227, 228, 229, 230, 230, 231, 231, 231, + 232, 232, 232, 233, 234, 198, 198, 0, 198, 198, + + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198 + } ; + +static yyconst short int yy_nxt[861] = + { 0, + 198, 53, 54, 55, 142, 143, 198, 56, 142, 143, + 197, 196, 192, 160, 167, 160, 57, 53, 54, 55, + 161, 168, 161, 56, 160, 189, 173, 197, 197, 167, + 167, 161, 57, 53, 54, 55, 168, 168, 166, 59, + 196, 196, 52, 156, 144, 193, 192, 190, 57, 52, + 53, 54, 55, 189, 187, 183, 59, 179, 145, 52, + 144, 176, 145, 159, 144, 57, 52, 53, 54, 55, + 156, 145, 144, 61, 155, 153, 52, 151, 149, 147, + 145, 144, 57, 52, 53, 54, 55, 198, 198, 198, + 61, 198, 198, 52, 198, 198, 198, 198, 198, 57, + + 52, 53, 54, 55, 198, 198, 198, 63, 198, 198, + 52, 198, 198, 198, 198, 198, 57, 52, 53, 54, + 55, 198, 198, 198, 63, 198, 198, 52, 198, 198, + 198, 198, 198, 57, 52, 53, 54, 55, 198, 198, + 198, 65, 198, 198, 52, 198, 198, 198, 198, 198, + 57, 52, 53, 54, 55, 198, 198, 198, 65, 198, + 198, 52, 198, 198, 198, 198, 198, 57, 52, 53, + 54, 55, 198, 198, 198, 67, 198, 198, 52, 198, + 198, 198, 198, 198, 57, 52, 53, 54, 55, 198, + 198, 198, 67, 198, 198, 52, 198, 198, 198, 198, + + 198, 57, 52, 68, 69, 70, 55, 71, 68, 68, + 72, 73, 68, 74, 68, 75, 68, 76, 76, 77, + 68, 78, 198, 198, 198, 79, 79, 78, 198, 198, + 198, 79, 79, 80, 81, 82, 55, 83, 83, 84, + 85, 86, 80, 87, 80, 88, 80, 89, 90, 91, + 80, 92, 92, 93, 198, 94, 95, 198, 96, 97, + 198, 98, 99, 100, 198, 198, 198, 198, 101, 100, + 100, 53, 54, 55, 198, 198, 198, 103, 198, 198, + 104, 198, 198, 198, 198, 198, 57, 52, 53, 54, + 55, 198, 198, 198, 103, 198, 198, 104, 198, 198, + + 198, 198, 198, 57, 52, 105, 106, 107, 55, 108, + 105, 105, 109, 105, 110, 111, 105, 105, 105, 112, + 112, 113, 105, 53, 54, 55, 198, 198, 198, 115, + 198, 198, 52, 198, 198, 198, 198, 198, 57, 52, + 53, 54, 55, 198, 198, 198, 115, 198, 198, 52, + 198, 198, 198, 198, 198, 57, 52, 116, 198, 198, + 198, 117, 117, 116, 198, 198, 198, 117, 117, 118, + 198, 198, 198, 119, 119, 118, 198, 198, 198, 119, + 119, 53, 54, 55, 198, 198, 198, 121, 198, 198, + 52, 198, 198, 198, 198, 198, 57, 52, 53, 54, + + 55, 198, 198, 198, 121, 198, 198, 52, 198, 198, + 198, 198, 198, 57, 52, 122, 198, 198, 198, 123, + 123, 122, 198, 198, 198, 123, 123, 124, 198, 198, + 198, 125, 125, 124, 198, 198, 198, 125, 125, 53, + 54, 55, 198, 198, 198, 127, 198, 198, 128, 198, + 198, 198, 198, 198, 57, 52, 53, 54, 55, 198, + 198, 198, 127, 198, 198, 128, 198, 198, 198, 198, + 198, 57, 52, 130, 54, 131, 198, 198, 198, 132, + 198, 198, 198, 198, 198, 198, 198, 198, 133, 134, + 130, 54, 131, 198, 198, 198, 132, 198, 198, 198, + + 198, 198, 198, 198, 198, 133, 134, 136, 137, 138, + 198, 198, 198, 139, 198, 198, 198, 198, 198, 198, + 198, 198, 140, 136, 137, 138, 198, 198, 198, 139, + 198, 198, 198, 198, 198, 198, 198, 198, 140, 162, + 198, 163, 198, 198, 198, 198, 198, 198, 161, 165, + 165, 198, 198, 166, 198, 198, 198, 198, 198, 164, + 164, 169, 198, 170, 198, 198, 198, 198, 198, 198, + 168, 172, 172, 198, 198, 173, 198, 198, 198, 198, + 198, 171, 171, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 141, 141, 141, 141, 141, 141, 141, 141, 141, + + 146, 198, 198, 198, 146, 146, 198, 146, 148, 198, + 198, 198, 148, 148, 198, 148, 150, 198, 198, 198, + 150, 150, 198, 150, 152, 198, 198, 198, 152, 152, + 198, 152, 154, 198, 198, 198, 154, 154, 198, 154, + 157, 198, 157, 158, 198, 158, 164, 198, 164, 171, + 198, 171, 174, 198, 174, 175, 198, 198, 198, 175, + 175, 198, 175, 177, 198, 177, 178, 198, 198, 198, + 178, 178, 198, 178, 180, 198, 180, 181, 198, 181, + 182, 198, 198, 198, 182, 182, 198, 182, 184, 198, + 184, 185, 198, 185, 186, 198, 198, 198, 186, 186, + + 198, 186, 188, 188, 198, 188, 188, 188, 188, 188, + 191, 191, 198, 191, 191, 191, 191, 191, 191, 194, + 194, 198, 198, 194, 194, 194, 194, 194, 195, 198, + 198, 195, 195, 195, 195, 195, 195, 165, 165, 172, + 172, 51, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198 + } ; + +static yyconst short int yy_chk[861] = + { 0, + 0, 1, 1, 1, 49, 49, 0, 1, 50, 50, + 197, 196, 192, 84, 93, 160, 1, 2, 2, 2, + 84, 93, 160, 2, 162, 189, 173, 172, 168, 167, + 169, 162, 2, 3, 3, 3, 167, 169, 166, 3, + 165, 161, 3, 156, 144, 139, 136, 132, 3, 3, + 4, 4, 4, 130, 127, 121, 4, 115, 109, 4, + 106, 103, 85, 83, 81, 4, 4, 5, 5, 5, + 73, 72, 69, 5, 67, 65, 5, 63, 61, 59, + 56, 53, 5, 5, 6, 6, 6, 51, 0, 0, + 6, 0, 0, 6, 0, 0, 0, 0, 0, 6, + + 6, 7, 7, 7, 0, 0, 0, 7, 0, 0, + 7, 0, 0, 0, 0, 0, 7, 7, 8, 8, + 8, 0, 0, 0, 8, 0, 0, 8, 0, 0, + 0, 0, 0, 8, 8, 9, 9, 9, 0, 0, + 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, + 9, 9, 10, 10, 10, 0, 0, 0, 10, 0, + 0, 10, 0, 0, 0, 0, 0, 10, 10, 11, + 11, 11, 0, 0, 0, 11, 0, 0, 11, 0, + 0, 0, 0, 0, 11, 11, 12, 12, 12, 0, + 0, 0, 12, 0, 0, 12, 0, 0, 0, 0, + + 0, 12, 12, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 15, 0, 0, 0, 15, 15, 16, 0, 0, + 0, 16, 16, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 19, 19, 19, 0, 19, 19, 0, 19, 19, + 0, 19, 19, 21, 0, 0, 0, 0, 21, 21, + 21, 23, 23, 23, 0, 0, 0, 23, 0, 0, + 23, 0, 0, 0, 0, 0, 23, 23, 24, 24, + 24, 0, 0, 0, 24, 0, 0, 24, 0, 0, + + 0, 0, 0, 24, 24, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 27, 27, 27, 0, 0, 0, 27, + 0, 0, 27, 0, 0, 0, 0, 0, 27, 27, + 28, 28, 28, 0, 0, 0, 28, 0, 0, 28, + 0, 0, 0, 0, 0, 28, 28, 31, 0, 0, + 0, 31, 31, 32, 0, 0, 0, 32, 32, 33, + 0, 0, 0, 33, 33, 34, 0, 0, 0, 34, + 34, 35, 35, 35, 0, 0, 0, 35, 0, 0, + 35, 0, 0, 0, 0, 0, 35, 35, 36, 36, + + 36, 0, 0, 0, 36, 0, 0, 36, 0, 0, + 0, 0, 0, 36, 36, 37, 0, 0, 0, 37, + 37, 38, 0, 0, 0, 38, 38, 39, 0, 0, + 0, 39, 39, 40, 0, 0, 0, 40, 40, 41, + 41, 41, 0, 0, 0, 41, 0, 0, 41, 0, + 0, 0, 0, 0, 41, 41, 42, 42, 42, 0, + 0, 0, 42, 0, 0, 42, 0, 0, 0, 0, + 0, 42, 42, 43, 43, 43, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, + 44, 44, 44, 0, 0, 0, 44, 0, 0, 0, + + 0, 0, 0, 0, 0, 44, 44, 45, 45, 45, + 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 46, 46, 46, 0, 0, 0, 46, + 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, + 0, 86, 0, 0, 0, 0, 0, 0, 86, 90, + 90, 0, 0, 90, 0, 0, 0, 0, 0, 90, + 90, 94, 0, 94, 0, 0, 0, 0, 0, 0, + 94, 99, 99, 0, 0, 99, 0, 0, 0, 0, + 0, 99, 99, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, + + 212, 0, 0, 0, 212, 212, 0, 212, 213, 0, + 0, 0, 213, 213, 0, 213, 214, 0, 0, 0, + 214, 214, 0, 214, 215, 0, 0, 0, 215, 215, + 0, 215, 216, 0, 0, 0, 216, 216, 0, 216, + 217, 0, 217, 218, 0, 218, 219, 0, 219, 220, + 0, 220, 221, 0, 221, 222, 0, 0, 0, 222, + 222, 0, 222, 223, 0, 223, 224, 0, 0, 0, + 224, 224, 0, 224, 225, 0, 225, 226, 0, 226, + 227, 0, 0, 0, 227, 227, 0, 227, 228, 0, + 228, 229, 0, 229, 230, 0, 0, 0, 230, 230, + + 0, 230, 231, 231, 0, 231, 231, 231, 231, 231, + 232, 232, 0, 232, 232, 232, 232, 232, 232, 233, + 233, 0, 0, 233, 233, 233, 233, 233, 234, 0, + 0, 234, 234, 234, 234, 234, 234, 235, 235, 236, + 236, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "scan.l" +#define INITIAL 0 +/****************************************************************************** + + KPP - The Kinetic PreProcessor + Builds simulation code for chemical kinetic systems + + Copyright (C) 1995-1996 Valeriu Damian and Adrian Sandu + Copyright (C) 1997-2005 Adrian Sandu + + KPP is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation (http://www.gnu.org/copyleft/gpl.html); either version 2 of the + License, or (at your option) any later version. + + KPP is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along + with this program; if not, consult http://www.gnu.org/copyleft/gpl.html or + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + Adrian Sandu + Computer Science Department + Virginia Polytechnic Institute and State University + Blacksburg, VA 24060 + E-mail: sandu@cs.vt.edu + +******************************************************************************/ +#define CMD_STATE 1 +#define INC_STATE 2 +#define MOD_STATE 3 +#define INT_STATE 4 + +#define PRM_STATE 5 +#define DSP_STATE 6 +#define SSP_STATE 7 +#define INI_STATE 8 +#define EQN_STATE 9 +#define EQNTAG_STATE 10 + +#define RATE_STATE 11 +#define LMP_STATE 12 +#define CR_IGNORE 13 +#define SC_IGNORE 14 +#define ATM_STATE 15 +#define LKT_STATE 16 +#define INL_STATE 17 + +#define MNI_STATE 18 +#define TPT_STATE 19 +#define USE_STATE 20 + +#define COMMENT 21 +#define COMMENT2 22 +#define EQN_ID 23 + +#define INL_CODE 24 + +#line 42 "scan.l" + #include "gdata.h" + #include "scan.h" + #include "y.tab.h" + + void Include ( char * filename ); + int EndInclude(); + + int crt_line_no = 1; + char *crt_filename; + + #define MAX_INCLUDE 10 + + YY_BUFFER_STATE yy_buffers[ MAX_INCLUDE ]; + int yy_line_no[ MAX_INCLUDE ]; + char *yy_filename[ MAX_INCLUDE ]; + int yy_buf_level = 0; + + char crtToken[100]; + char nextToken[100]; + int crtTokType; + int nextTokType; + int crtLine; + char crtFile[100]; + char crt_rate[100]; + + int oldnErr = 0; + + int idx; + int oldstate; + extern int yyerrflag; + + typedef struct { + char *name; + int next; + int cmd; + } KEYWORD; + + KEYWORD keywords[] = { { "INCLUDE", INC_STATE, 0 }, + { "MODEL", MOD_STATE, 0 }, + { "INTEGRATOR", INT_STATE, 0 }, + { "JACOBIAN", PRM_STATE, JACOBIAN }, + { "HESSIAN", PRM_STATE, HESSIAN }, + { "STOICMAT", PRM_STATE, STOICMAT }, + { "STOCHASTIC", PRM_STATE, STOCHASTIC }, + { "DOUBLE", PRM_STATE, DOUBLE }, + { "REORDER", PRM_STATE, REORDER }, + { "MEX", PRM_STATE, MEX }, + { "DUMMYINDEX", PRM_STATE, DUMMYINDEX}, + { "EQNTAGS", PRM_STATE, EQNTAGS}, + { "FUNCTION", PRM_STATE, FUNCTION }, + { "ATOMS", ATM_STATE, ATOMDECL }, + { "CHECK", ATM_STATE, CHECK }, + { "CHECKALL", INITIAL, CHECKALL }, + { "DEFVAR", DSP_STATE, DEFVAR }, + { "DEFRAD", DSP_STATE, DEFRAD }, + { "DEFFIX", DSP_STATE, DEFFIX }, + { "SETVAR", SSP_STATE, SETVAR }, + { "SETRAD", SSP_STATE, SETRAD }, + { "SETFIX", SSP_STATE, SETFIX }, + { "INITVALUES", INI_STATE, INITVALUES }, + { "EQUATIONS", EQN_STATE, EQUATIONS }, + { "LUMP", LMP_STATE, LUMP }, + { "LOOKAT", LKT_STATE, LOOKAT }, + { "LOOKATALL", INITIAL, LOOKATALL }, + { "TRANSPORT", TPT_STATE, TRANSPORT }, + { "TRANSPORTALL", INITIAL, TRANSPORTALL }, + { "INITIALIZE", PRM_STATE, INITIALIZE }, + { "XGRID", PRM_STATE, XGRID }, + { "YGRID", PRM_STATE, YGRID }, + { "ZGRID", PRM_STATE, ZGRID }, + { "MONITOR", MNI_STATE, MONITOR }, + { "WRITE_ATM", INITIAL, WRITE_ATM }, + { "WRITE_SPC", INITIAL, WRITE_SPC }, + { "WRITE_MAT", INITIAL, WRITE_MAT }, + { "WRITE_OPT", INITIAL, WRITE_OPT }, + { "USE", PRM_STATE, USE }, + { "LANGUAGE", PRM_STATE, LANGUAGE }, + { "INLINE", INL_STATE, INLINE }, + { "ENDINLINE", INITIAL, ENDINLINE }, + { "INTFILE", PRM_STATE, INTFILE }, + { "DRIVER", PRM_STATE, DRIVER }, + { "RUN", PRM_STATE, RUN }, + { "USES", USE_STATE, USES }, + { "SPARSEDATA", PRM_STATE, SPARSEDATA }, + { 0, 0, 0 } + }; + + int CheckKeyword( char *cmd ); + +#define RETURN( x ) \ + if(1) { \ + if ( yyerrflag == 0) { \ + strcpy( crtToken, nextToken ); \ + crtTokType = nextTokType; \ + crtLine = crt_line_no; \ + strcpy( crtFile, crt_filename ); \ + } \ + strcpy( nextToken, yytext); \ + nextTokType = x; \ + return (x); \ + } +#line 783 "lex.yy.c" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( yy_current_buffer->yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yylex YY_PROTO(( void )) +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 164 "scan.l" + +#line 936 "lex.yy.c" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 842 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + +do_action: /* This label is used only to access EOF actions. */ + + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yy_hold_char; + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 165 "scan.l" +{ + } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 167 "scan.l" +{ BEGIN CMD_STATE; + } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 169 "scan.l" +{ oldstate = (yy_start - 1) / 2; + BEGIN COMMENT; + } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 172 "scan.l" +{ oldstate = (yy_start - 1) / 2; + BEGIN COMMENT2; + } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 175 "scan.l" +{ + } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 177 "scan.l" +{ BEGIN oldstate; + } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 179 "scan.l" +{ + } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 181 "scan.l" +{ crt_line_no++; + BEGIN oldstate; + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 184 "scan.l" +{ crt_line_no++; + } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 186 "scan.l" +{ idx = CheckKeyword( yytext ); + if ( idx < 0 ) { + BEGIN CR_IGNORE; + break; + } + BEGIN keywords[idx].next; + if ( keywords[idx].cmd ) { + crt_section = keywords[idx].cmd; + RETURN( keywords[idx].cmd ); + } + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 197 "scan.l" +{ Include( IncName(yytext) ); + BEGIN CR_IGNORE; + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 200 "scan.l" +{ Include( ModelName(yytext) ); + BEGIN CR_IGNORE; + } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 203 "scan.l" +{ Include( IntegName(yytext) ); + BEGIN CR_IGNORE; + } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 206 "scan.l" +{ strcpy( yylval.str, yytext ); + BEGIN CR_IGNORE; + RETURN( PARAMETER ); + } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 210 "scan.l" +{ ScanError("Extra parameter on command line '%s'", yytext); + } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 212 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( ATOMID ); + } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 215 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 217 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( SPCSPC ); + } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 220 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( SPCNR ); + } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 223 "scan.l" +{ RETURN( SPCEQUAL ); + } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 225 "scan.l" +{ RETURN( SPCPLUS ); + } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 227 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 229 "scan.l" +{ ScanError("Invalid character '%c' in species definition", yytext[0] ); + } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 231 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( SSPID ); + } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 234 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 236 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( INISPC ); + } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 239 "scan.l" +{ RETURN( INIEQUAL ); + } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 241 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 243 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( INIVALUE ); + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 246 "scan.l" +{ ScanError("Invalid character '%c' in initial values", yytext[0] ); + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 248 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( EQNSPC ); + } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 251 "scan.l" +{ RETURN( EQNEQUAL ); + } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 253 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( EQNCOEF ); + } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 256 "scan.l" +{ BEGIN RATE_STATE; + *crt_rate = 0; + RETURN( EQNCOLON ); + } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 260 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( EQNSIGN ); + } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 263 "scan.l" +{ BEGIN EQNTAG_STATE; + RETURN( EQNLESS ); + } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 266 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( EQNTAG ); + } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 269 "scan.l" +{ BEGIN EQN_STATE; + RETURN( EQNGREATER ); + } + YY_BREAK +case 39: +YY_RULE_SETUP +#line 272 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( RATE ); + } + YY_BREAK +case 40: +YY_RULE_SETUP +#line 275 "scan.l" +{ BEGIN EQN_STATE; + RETURN( yytext[0] ); + } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 278 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( LMPSPC ); + } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 281 "scan.l" +{ RETURN( LMPPLUS ); + } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 283 "scan.l" +{ RETURN( LMPCOLON ); + } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 285 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 287 "scan.l" +{ ScanError("Invalid character '%c' in species definition", yytext[0] ); + } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 289 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( LKTID ); + } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 292 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 294 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( TPTID ); + } + YY_BREAK +case 49: +YY_RULE_SETUP +#line 297 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 299 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( USEID ); + } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 302 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 304 "scan.l" +{ strcpy( yylval.str, yytext ); + RETURN( MNIID ); + } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 307 "scan.l" +{ RETURN( yytext[0] ); + } + YY_BREAK +case 54: +YY_RULE_SETUP +#line 309 "scan.l" +{ strcpy( yylval.str, yytext ); + BEGIN INL_CODE; + RETURN( INLCTX ); + } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 313 "scan.l" +{ if ( EqNoCase( yytext+1, "ENDINLINE" ) ){ + BEGIN INITIAL; + RETURN( ENDINLINE ); + } + else { + strcpy( yylval.str, yytext ); + RETURN( INCODE ); + } + } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 322 "scan.l" +{ crt_line_no++; + strcpy( yylval.str,yytext ); + RETURN( INCODE ); + } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 326 "scan.l" +{ strcpy( yylval.str,yytext ); + RETURN( INCODE ); + } + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(CMD_STATE): +case YY_STATE_EOF(INC_STATE): +case YY_STATE_EOF(MOD_STATE): +case YY_STATE_EOF(INT_STATE): +case YY_STATE_EOF(PRM_STATE): +case YY_STATE_EOF(DSP_STATE): +case YY_STATE_EOF(SSP_STATE): +case YY_STATE_EOF(INI_STATE): +case YY_STATE_EOF(EQN_STATE): +case YY_STATE_EOF(EQNTAG_STATE): +case YY_STATE_EOF(RATE_STATE): +case YY_STATE_EOF(LMP_STATE): +case YY_STATE_EOF(CR_IGNORE): +case YY_STATE_EOF(SC_IGNORE): +case YY_STATE_EOF(ATM_STATE): +case YY_STATE_EOF(LKT_STATE): +case YY_STATE_EOF(INL_STATE): +case YY_STATE_EOF(MNI_STATE): +case YY_STATE_EOF(TPT_STATE): +case YY_STATE_EOF(USE_STATE): +case YY_STATE_EOF(COMMENT): +case YY_STATE_EOF(COMMENT2): +case YY_STATE_EOF(EQN_ID): +case YY_STATE_EOF(INL_CODE): +#line 329 "scan.l" +{ if ( ! EndInclude() ) { + RETURN( INITIAL ); + } + } + YY_BREAK +case 58: +YY_RULE_SETUP +#line 333 "scan.l" +ECHO; + YY_BREAK +#line 1447 "lex.yy.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type yy_get_previous_state() + { + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = yy_start; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { + register int yy_is_jam; + register char *yy_cp = yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 198); + + return yy_is_jam ? 0 : yy_current_state; + } + + +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register char *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ + + +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + + return c; + } + + +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } + + +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +#endif + + +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +#endif + + +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 333 "scan.l" + + +void Include ( char * name ) +{ +FILE *f; +YY_BUFFER_STATE newb; + + if ( yy_buf_level == MAX_INCLUDE ) { + printf("\nInclude nested too deep. Include %s ignored", name); + return; + } + + yy_buffers[ yy_buf_level ] = yy_current_buffer; + yy_line_no[ yy_buf_level ] = crt_line_no; + yy_filename[ yy_buf_level ] = crt_filename; + yy_buf_level++; + + crt_line_no = 1; + + crt_filename = malloc( 1 + strlen( name ) ); + strcpy( crt_filename, name ); + + + f = fopen( name, "r" ); + if( f == 0 ) + FatalError(3,"%s: Can't read file", name ); + + newb = yy_create_buffer(f, YY_BUF_SIZE); + yy_switch_to_buffer( newb ); +} + +int EndInclude() +{ +YY_BUFFER_STATE oldb; +char * oldn; + + if ( yy_buf_level > 0 ) { + oldb = yy_current_buffer; + oldn = crt_filename; + yy_buf_level--; + yy_switch_to_buffer( yy_buffers[yy_buf_level] ); + crt_line_no = yy_line_no[ yy_buf_level ]; + crt_filename = yy_filename[ yy_buf_level ]; + yy_delete_buffer( oldb ); + free( oldn ); + return 1; + } + return 0; +} + +int EqNoCase( char *s1, char *s2 ) +{ + while( *s1 ) { + if ( toupper(*s1++) != toupper(*s2++) ) return 0; + } + return *s1 == *s2; +} + +int CheckKeyword( char *cmd ) +{ +int i; + + i = 0; + while( 1 ) { + if( keywords[i].name == 0 ) { + ScanError( "'%s': Unknown command (ignored)", cmd); + return -1; + } + if( EqNoCase( cmd, keywords[i].name ) ) { + return i; + } + i++; + } +} + diff --git a/chem/KPP/kpp/kpp-2.1/src/y.tab.c b/chem/KPP/kpp/kpp-2.1/src/y.tab.c new file mode 100755 index 0000000000..adc1feb83f --- /dev/null +++ b/chem/KPP/kpp/kpp-2.1/src/y.tab.c @@ -0,0 +1,1702 @@ +#ifndef lint +/*static char yysccsid[] = "from: @(#)yaccpar 1.9 (Berkeley) 02/21/93";*/ +static char yyrcsid[] = "$Id: skeleton.c,v 1.4 1993/12/21 18:45:32 jtc Exp $"; +#endif +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define yyclearin (yychar=(-1)) +#define yyerrok (yyerrflag=0) +#define YYRECOVERING (yyerrflag!=0) +#define YYPREFIX "yy" +#line 35 "scan.y" + #include + #include + #include + #include + #include + #include "scan.h" + + #define __YYSCLASS + + #define YYDEBUG 1 + extern char yytext[]; + extern FILE * yyin; + + int nError = 0; + int nWarning = 0; + + int crt_section; + int eqState; + int isPhoto = 0; + + char crt_term[ 30 ]; + char crt_coef[ 30 ]; + + char * InlineBuf; + int InlineLen; + + void SemicolonError(); + extern int yyerrflag; + +#line 66 "scan.y" +typedef union{ + char str[80]; +} YYSTYPE; +#line 47 "y.tab.c" +#define JACOBIAN 257 +#define DOUBLE 258 +#define FUNCTION 259 +#define DEFVAR 260 +#define DEFRAD 261 +#define DEFFIX 262 +#define SETVAR 263 +#define SETRAD 264 +#define SETFIX 265 +#define HESSIAN 266 +#define STOICMAT 267 +#define STOCHASTIC 268 +#define INITVALUES 269 +#define EQUATIONS 270 +#define LUMP 271 +#define INIEQUAL 272 +#define EQNEQUAL 273 +#define EQNCOLON 274 +#define LMPCOLON 275 +#define LMPPLUS 276 +#define SPCPLUS 277 +#define SPCEQUAL 278 +#define ATOMDECL 279 +#define CHECK 280 +#define CHECKALL 281 +#define REORDER 282 +#define MEX 283 +#define DUMMYINDEX 284 +#define EQNTAGS 285 +#define LOOKAT 286 +#define LOOKATALL 287 +#define TRANSPORT 288 +#define TRANSPORTALL 289 +#define MONITOR 290 +#define USES 291 +#define SPARSEDATA 292 +#define WRFCONFORM 293 +#define WRITE_ATM 294 +#define WRITE_SPC 295 +#define WRITE_MAT 296 +#define WRITE_OPT 297 +#define INITIALIZE 298 +#define XGRID 299 +#define YGRID 300 +#define ZGRID 301 +#define USE 302 +#define LANGUAGE 303 +#define INTFILE 304 +#define DRIVER 305 +#define RUN 306 +#define INLINE 307 +#define ENDINLINE 308 +#define PARAMETER 309 +#define SPCSPC 310 +#define INISPC 311 +#define INIVALUE 312 +#define EQNSPC 313 +#define EQNSIGN 314 +#define EQNCOEF 315 +#define RATE 316 +#define LMPSPC 317 +#define SPCNR 318 +#define ATOMID 319 +#define LKTID 320 +#define MNIID 321 +#define INLCTX 322 +#define INCODE 323 +#define SSPID 324 +#define EQNLESS 325 +#define EQNTAG 326 +#define EQNGREATER 327 +#define TPTID 328 +#define USEID 329 +#define YYERRCODE 256 +short yylhs[] = { -1, + 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 15, 15, 4, 4, + 4, 16, 10, 10, 10, 17, 11, 11, 11, 18, + 12, 12, 12, 19, 14, 14, 14, 20, 6, 6, + 6, 21, 5, 5, 5, 22, 22, 23, 24, 25, + 25, 26, 26, 7, 7, 7, 27, 8, 8, 8, + 28, 28, 1, 1, 2, 29, 30, 31, 31, 31, + 32, 32, 9, 9, 9, 33, 33, 13, 13, +}; +short yylen[] = { 2, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, + 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, + 2, 1, 3, 2, 2, 1, 3, 2, 2, 1, + 3, 2, 2, 1, 3, 2, 2, 1, 3, 2, + 2, 1, 3, 2, 2, 1, 1, 3, 1, 3, + 1, 2, 1, 3, 2, 2, 3, 3, 2, 2, + 4, 3, 2, 1, 3, 2, 2, 3, 2, 1, + 2, 1, 3, 2, 2, 3, 3, 2, 1, +}; +short yydefred[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 28, 0, 29, 0, 0, 0, 30, + 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 6, 11, 0, 0, + 0, 0, 76, 77, 0, 0, 0, 72, 0, 0, + 0, 0, 4, 5, 12, 0, 0, 0, 0, 0, + 102, 0, 0, 0, 0, 0, 0, 0, 0, 100, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 7, + 8, 9, 10, 0, 56, 0, 0, 0, 64, 0, + 0, 0, 60, 0, 0, 0, 68, 0, 0, 46, + 36, 37, 38, 39, 34, 35, 42, 43, 44, 41, + 0, 2, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 101, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 0, 47, 83, 0, + 0, 81, 0, 0, 87, 0, 95, 0, 0, 0, + 92, 97, 98, 107, 106, 0, 0, 0, 0, 0, + 0, 40, 108, 82, 0, 91, 93, 80, +}; +short yydgoto[] = { 44, + 181, 75, 45, 87, 51, 59, 68, 76, 83, 96, + 104, 100, 167, 108, 124, 88, 97, 105, 101, 109, + 60, 52, 53, 54, 171, 172, 69, 77, 78, 142, + 79, 80, 84, +}; +short yysindex[] = { -139, + -285, -278, -271, -240, -240, -240, -253, -253, -253, -226, + -219, -212, -243, -249, -248, -237, -237, 0, -211, -210, + -209, -207, -246, 0, -251, 0, -242, -256, -204, 0, + 0, 0, 0, -203, -201, -200, -198, -197, -195, -194, + -192, -176, -250, 0, -139, 0, 0, 0, -3, -215, + -175, -3, 0, 0, -175, -175, -3, 0, -265, -3, + -265, -265, 0, 0, 0, -3, -138, -174, -3, -3, + 0, -288, -177, -188, -227, -270, -3, -227, -247, 0, + -3, -228, -178, -3, -3, 0, -150, -3, -150, 0, + 0, 0, 0, -3, 0, -149, -3, -3, 0, -158, + -3, -3, 0, -148, -3, -3, 0, -157, -3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -147, 0, 0, 115, -290, -3, 115, 115, -3, 115, + 115, -137, -3, 115, 115, 0, 0, -146, -227, -3, + 115, -136, -263, 0, -288, 115, -140, -178, -3, 115, + 115, -3, 115, 115, -3, 115, 115, -3, 115, 115, + -3, 115, 115, -3, 115, 0, -291, 0, 0, -132, + -98, 0, 115, 115, 0, 115, 0, -136, 115, -136, + 0, 0, 0, 0, 0, 115, 115, 115, 115, 115, + 115, 0, 0, 0, -290, 0, 0, 0, +}; +short yyrindex[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 182, 0, 0, 0, 0, 124, + 1996, 0, 0, 0, 2047, 2100, 0, 0, 2153, 0, + 2204, 2268, 0, 0, 0, 0, 0, 2319, 0, 0, + 0, 0, 0, 0, 0, 2372, 0, 0, 0, 0, + 0, 0, 2425, 0, 0, 0, 2476, 0, 2540, 0, + 0, 0, 0, 0, 0, 2591, 0, 0, 0, 2644, + 0, 0, 0, 2697, 0, 0, 0, 2748, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1792, 0, 0, 1860, 567, 0, 636, + 1588, 0, 0, 1655, 328, 0, 0, 0, 0, 0, + 426, 0, 0, 0, 0, 1383, 0, 0, 0, 1452, + 1180, 0, 1248, 976, 0, 1044, 154, 0, 205, 772, + 0, 839, 1, 0, 52, 0, 0, 0, 0, 0, + 125, 0, 1927, 704, 0, 1724, 0, 0, 498, 126, + 0, 0, 0, 0, 0, 1520, 1316, 1111, 256, 908, + 103, 0, 0, 0, 0, 0, 0, 0, +}; +short yygindex[] = { 141, + -118, 0, 0, 170, 88, 87, 0, 0, 0, 0, + 0, 0, 0, 0, -48, 2, 92, 85, 90, 83, + -20, -21, 0, 0, 0, -2, 127, 116, 119, 57, + -55, -70, -68, +}; +#define YYTABLESIZE 3055 +short yytable[] = { 106, + 67, 136, 57, 127, 98, 120, 70, 81, 128, 94, + 182, 130, 66, 102, 149, 49, 192, 131, 85, 169, + 134, 135, 143, 46, 71, 144, 73, 170, 141, 126, + 47, 193, 146, 126, 126, 150, 151, 48, 129, 153, + 129, 129, 71, 72, 73, 154, 147, 148, 156, 157, + 145, 66, 159, 160, 74, 123, 162, 163, 58, 196, + 165, 197, 125, 71, 72, 73, 145, 67, 82, 50, + 58, 121, 107, 95, 183, 74, 99, 173, 103, 185, + 174, 86, 63, 143, 176, 71, 72, 73, 152, 64, + 152, 179, 55, 56, 61, 62, 65, 90, 91, 92, + 186, 93, 65, 187, 110, 111, 188, 112, 113, 189, + 114, 115, 190, 116, 117, 191, 118, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 119, 132, 50, 137, 67, 138, 82, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 63, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 86, 99, + 95, 107, 103, 168, 175, 166, 184, 194, 195, 180, + 177, 1, 79, 78, 94, 122, 89, 155, 161, 158, + 164, 140, 198, 139, 133, 178, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 0, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 0, 0, 0, 0, 0, 0, 0, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 0, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 0, 0, 0, 0, 90, 0, 67, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 0, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, + 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 0, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 89, 0, 0, 0, 0, + 0, 65, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 0, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 0, 0, 0, 0, + 0, 63, 0, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 88, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 0, 0, 0, + 0, 0, 62, 0, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 0, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 0, 0, 0, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 61, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, + 0, 0, 0, 0, 0, 0, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 70, 0, 0, 0, 0, + 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 0, 0, 0, + 0, 0, 0, 69, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 0, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 0, 0, 0, 0, 0, 89, 89, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 0, 0, 0, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, + 0, 59, 0, 0, 0, 0, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 0, 0, 0, 0, 0, + 88, 88, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 88, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 58, 0, + 0, 0, 0, 0, 0, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 0, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 57, 0, 0, + 0, 0, 0, 0, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 0, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 55, 0, 0, 0, 0, + 0, 0, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 0, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 69, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 54, 0, 0, 0, 0, 0, 0, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 0, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 0, 0, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 53, 0, 0, 0, 0, 0, 0, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 0, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 0, 0, 0, 0, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 51, + 0, 0, 0, 0, 0, 0, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 0, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, + 0, 0, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 50, 0, 0, + 0, 0, 0, 0, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 0, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 49, 0, 0, 0, 0, + 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 0, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 0, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 105, 0, 0, 0, 0, 0, 0, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 0, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 0, 0, 0, 0, 0, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 104, 0, 0, 0, 0, 0, 0, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 0, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 103, + 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 86, 0, 0, + 0, 0, 0, 0, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 0, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 0, 0, 0, 0, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 85, 0, 0, 0, 0, 0, + 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 0, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 84, 0, 0, 0, 0, 0, 0, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 0, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, + 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 75, 0, 0, 0, 0, 0, 0, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 0, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, + 0, 0, 0, 0, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 74, + 0, 0, 0, 0, 0, 0, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 0, 0, 0, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 73, 0, 0, 0, + 0, 0, 0, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 0, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 0, 0, 0, 85, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 15, 0, 0, 0, 0, + 0, 0, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 0, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 0, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 17, + 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 0, 0, 0, 0, 0, 0, 0, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 18, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 0, 0, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 0, 0, + 0, 0, 0, 19, 0, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 0, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 20, 0, 0, + 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 21, 0, + 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 0, 0, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 22, 0, 0, 0, 0, 0, 0, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 0, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 0, 0, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 23, 0, 0, 0, 0, 0, + 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 13, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 0, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 14, + 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 24, 0, 0, 0, 0, 0, 0, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 0, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 0, 0, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 26, 0, 0, 0, 0, 0, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 0, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, + 0, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 25, 0, 0, 0, + 0, 0, 0, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 0, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, + 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 0, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 0, 0, 0, 0, 0, 0, 0, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 0, 0, 0, 0, 0, 0, 0, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 0, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, + 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 0, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 0, 0, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 0, 0, + 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 0, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 0, + 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, +}; +short yycheck[] = { 256, + 0, 72, 256, 52, 256, 256, 256, 256, 57, 256, + 274, 60, 256, 256, 83, 256, 308, 66, 256, 310, + 69, 70, 78, 309, 313, 273, 315, 318, 77, 51, + 309, 323, 81, 55, 56, 84, 85, 309, 59, 88, + 61, 62, 313, 314, 315, 94, 275, 276, 97, 98, + 314, 0, 101, 102, 325, 59, 105, 106, 324, 178, + 109, 180, 278, 313, 314, 315, 314, 311, 317, 310, + 324, 322, 329, 320, 145, 325, 328, 126, 321, 148, + 129, 319, 309, 139, 133, 313, 314, 315, 87, 309, + 89, 140, 5, 6, 8, 9, 309, 309, 309, 309, + 149, 309, 0, 152, 309, 309, 155, 309, 309, 158, + 309, 309, 161, 309, 309, 164, 309, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 309, 272, 310, 313, 311, 326, 317, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 0, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 319, 328, + 320, 329, 321, 59, 312, 323, 317, 310, 277, 316, + 327, 0, 59, 59, 59, 45, 17, 96, 104, 100, + 108, 76, 195, 75, 68, 139, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 0, -1, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, -1, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, -1, -1, -1, -1, 0, -1, 329, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, + 329, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 0, -1, -1, -1, -1, + -1, 329, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, -1, -1, -1, -1, + -1, 328, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, + -1, -1, 328, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, 0, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 328, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 0, -1, -1, -1, -1, + 313, 314, 315, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, + -1, -1, -1, 0, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, -1, -1, 313, 314, + 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 325, -1, -1, -1, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, + -1, 0, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, + 313, 314, 315, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 325, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 0, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 324, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 0, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 0, -1, -1, -1, -1, + -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 324, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 0, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 321, -1, -1, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 0, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 321, + -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 0, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 321, -1, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 0, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 0, -1, -1, -1, -1, + -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 320, -1, -1, -1, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 0, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 320, -1, -1, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 0, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 319, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 0, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 319, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 0, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 319, -1, -1, -1, -1, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 0, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, + -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 0, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 0, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 0, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, -1, -1, 311, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 0, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, -1, -1, -1, 311, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 0, -1, -1, -1, -1, + -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, -1, -1, 311, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0, -1, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, -1, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 0, + -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, -1, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, -1, -1, 310, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, + -1, -1, -1, 0, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, -1, -1, 310, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 0, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 0, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 0, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, -1, -1, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 0, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 0, -1, -1, -1, -1, + -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 0, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 0, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, -1, -1, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 0, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, + -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 0, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 0, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, -1, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, -1, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, -1, -1, -1, -1, -1, + -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, -1, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, +}; +#define YYFINAL 44 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 329 +#if YYDEBUG +char *yyname[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"JACOBIAN","DOUBLE", +"FUNCTION","DEFVAR","DEFRAD","DEFFIX","SETVAR","SETRAD","SETFIX","HESSIAN", +"STOICMAT","STOCHASTIC","INITVALUES","EQUATIONS","LUMP","INIEQUAL","EQNEQUAL", +"EQNCOLON","LMPCOLON","LMPPLUS","SPCPLUS","SPCEQUAL","ATOMDECL","CHECK", +"CHECKALL","REORDER","MEX","DUMMYINDEX","EQNTAGS","LOOKAT","LOOKATALL", +"TRANSPORT","TRANSPORTALL","MONITOR","USES","SPARSEDATA","WRFCONFORM", +"WRITE_ATM","WRITE_SPC","WRITE_MAT","WRITE_OPT","INITIALIZE","XGRID","YGRID", +"ZGRID","USE","LANGUAGE","INTFILE","DRIVER","RUN","INLINE","ENDINLINE", +"PARAMETER","SPCSPC","INISPC","INIVALUE","EQNSPC","EQNSIGN","EQNCOEF","RATE", +"LMPSPC","SPCNR","ATOMID","LKTID","MNIID","INLCTX","INCODE","SSPID","EQNLESS", +"EQNTAG","EQNGREATER","TPTID","USEID", +}; +char *yyrule[] = { +"$accept : program", +"program : section", +"program : section program", +"section : JACOBIAN PARAMETER", +"section : HESSIAN PARAMETER", +"section : STOICMAT PARAMETER", +"section : DOUBLE PARAMETER", +"section : REORDER PARAMETER", +"section : MEX PARAMETER", +"section : DUMMYINDEX PARAMETER", +"section : EQNTAGS PARAMETER", +"section : FUNCTION PARAMETER", +"section : STOCHASTIC PARAMETER", +"section : ATOMDECL atomlist", +"section : CHECK atomlist", +"section : DEFVAR species", +"section : DEFRAD species", +"section : DEFFIX species", +"section : SETVAR setspclist", +"section : SETRAD setspclist", +"section : SETFIX setspclist", +"section : INITVALUES initvalues", +"section : EQUATIONS equations", +"section : LUMP lumps", +"section : LOOKAT lookatlist", +"section : MONITOR monitorlist", +"section : TRANSPORT translist", +"section : CHECKALL", +"section : LOOKATALL", +"section : TRANSPORTALL", +"section : WRITE_ATM", +"section : WRITE_SPC", +"section : WRITE_MAT", +"section : WRITE_OPT", +"section : USE PARAMETER", +"section : LANGUAGE PARAMETER", +"section : INITIALIZE PARAMETER", +"section : XGRID PARAMETER", +"section : YGRID PARAMETER", +"section : ZGRID PARAMETER", +"section : INLINE INLCTX inlinecode ENDINLINE", +"section : INLINE error", +"section : INTFILE PARAMETER", +"section : DRIVER PARAMETER", +"section : RUN PARAMETER", +"section : USES uselist", +"section : SPARSEDATA PARAMETER", +"semicolon : semicolon ';'", +"semicolon : ';'", +"atomlist : atomlist atomdef semicolon", +"atomlist : atomdef semicolon", +"atomlist : error semicolon", +"atomdef : ATOMID", +"lookatlist : lookatlist lookatspc semicolon", +"lookatlist : lookatspc semicolon", +"lookatlist : error semicolon", +"lookatspc : LKTID", +"monitorlist : monitorlist monitorspc semicolon", +"monitorlist : monitorspc semicolon", +"monitorlist : error semicolon", +"monitorspc : MNIID", +"translist : translist transspc semicolon", +"translist : transspc semicolon", +"translist : error semicolon", +"transspc : TPTID", +"uselist : uselist usefile semicolon", +"uselist : usefile semicolon", +"uselist : error semicolon", +"usefile : USEID", +"setspclist : setspclist setspcspc semicolon", +"setspclist : setspcspc semicolon", +"setspclist : error semicolon", +"setspcspc : SSPID", +"species : species spc semicolon", +"species : spc semicolon", +"species : error semicolon", +"spc : spcname", +"spc : spcdef", +"spcname : SPCSPC SPCEQUAL atoms", +"spcdef : SPCSPC", +"atoms : atoms SPCPLUS atom", +"atoms : atom", +"atom : SPCNR SPCSPC", +"atom : SPCSPC", +"initvalues : initvalues assignment semicolon", +"initvalues : assignment semicolon", +"initvalues : error semicolon", +"assignment : INISPC INIEQUAL INIVALUE", +"equations : equations equation semicolon", +"equations : equation semicolon", +"equations : error semicolon", +"equation : eqntag lefths righths rate", +"equation : lefths righths rate", +"rate : RATE rate", +"rate : RATE", +"eqntag : EQNLESS EQNTAG EQNGREATER", +"lefths : expresion EQNEQUAL", +"righths : expresion EQNCOLON", +"expresion : expresion EQNSIGN term", +"expresion : EQNSIGN term", +"expresion : term", +"term : EQNCOEF EQNSPC", +"term : EQNSPC", +"lumps : lumps lump semicolon", +"lumps : lump semicolon", +"lumps : error semicolon", +"lump : LMPSPC LMPPLUS lump", +"lump : LMPSPC LMPCOLON LMPSPC", +"inlinecode : inlinecode INCODE", +"inlinecode : INCODE", +}; +#endif +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 +#endif +#endif +int yydebug; +int yynerrs; +int yyerrflag; +int yychar; +short *yyssp; +YYSTYPE *yyvsp; +YYSTYPE yyval; +YYSTYPE yylval; +short yyss[YYSTACKSIZE]; +YYSTYPE yyvs[YYSTACKSIZE]; +#define yystacksize YYSTACKSIZE +#line 384 "scan.y" + +void yyerror( char * str ) +{ +} + +void ParserErrorMessage() +{ + yyerrok; +/* + Message("[%d,%s] -> [%d,%s]", crtTokType, crtToken, nextTokType, nextToken ); +*/ + if( crtToken[0] == ';' ) { + ParserError("Misplaced ';'"); + return; + } + switch( crtTokType ) { + case ATOMID: + ParserError("Missing ';' after '%s'", crtToken ); + break; + + case SPCSPC: + ParserError("Missing ';' or '+' after '%s'", crtToken ); + break; + case SPCNR: + ParserError("Missing species after '%s'", crtToken ); + break; + case SPCPLUS: + ParserError("Missing atom after '%s'", crtToken ); + break; + case SPCEQUAL: + ParserError("Invalid '=' after '%s'", crtToken ); + break; + + case INISPC: + ParserError("Missing '=' after '%s'", crtToken ); + break; + case INIEQUAL: + ParserError("Missing value after '%s'", crtToken ); + break; + case INIVALUE: + ParserError("Missing ';' after '%s'", crtToken ); + break; + + case EQNSPC: + ParserError("Missing '+' or '=' after '%s'", crtToken ); + break; + case EQNEQUAL: + ParserError("Invalid right hand side of equation"); + break; + case EQNCOLON: + ParserError("Missing rate after '%s'", crtToken ); + break; + case EQNSIGN: + ParserError("Missing coeficient after '%s'", crtToken ); + break; + case EQNCOEF: + ParserError("Missing species after '%s'", crtToken ); + break; + case RATE: + ParserError("Missing ';' after '%s'", crtToken ); + break; + + case LMPSPC: + ParserError("Missing '+' or ':' or ';' after '%s'", crtToken ); + break; + case LMPPLUS: + ParserError("Missing species after '%s'", crtToken ); + break; + case LMPCOLON: + ParserError("Missing species after '%s'", crtToken ); + break; + case INLINE: + ParserError("Missing inline option after '%s'", crtToken ); + break; + + default: + ParserError("Syntax error after '%s'", crtToken ); + } +} + + +int Parser( char * filename ) +{ +extern int yydebug; +FILE *f; + + crt_filename = filename; + + f = fopen( crt_filename, "r" ); + if( f == 0 ) { + FatalError(7,"%s: File not found", crt_filename); + } + + yyin = f; + nError = 0; + nWarning = 0; + yydebug = 0; + + yyparse(); + + fclose( f ); + + return nError; +} + +#line 1109 "y.tab.c" +#define YYABORT goto yyabort +#define YYREJECT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab +int +#if defined(__STDC__) +yyparse(void) +#else +yyparse() +#endif +{ + register int yym, yyn, yystate; +#if YYDEBUG + register char *yys; + extern char *getenv(); + + if (yys = getenv("YYDEBUG")) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } +#endif + + yynerrs = 0; + yyerrflag = 0; + yychar = (-1); + + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; + +yyloop: + if ((yyn = yydefred[yystate]) != 0) goto yyreduce; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + } + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, yystate, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + yychar = (-1); + if (yyerrflag > 0) --yyerrflag; + goto yyloop; + } + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; + yyerror("syntax error"); +#ifdef lint + goto yyerrlab; +#endif +yyerrlab: + ++yynerrs; +yyinrecovery: + if (yyerrflag < 3) + { + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *yyssp); +#endif + if (yyssp <= yyss) goto yyabort; + --yyssp; + --yyvsp; + } + } + } + else + { + if (yychar == 0) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + yychar = (-1); + goto yyloop; + } +yyreduce: +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, yystate, yyn, yyrule[yyn]); +#endif + yym = yylen[yyn]; + yyval = yyvsp[1-yym]; + switch (yyn) + { +case 3: +#line 95 "scan.y" +{ CmdJacobian( yyvsp[0].str ); + } +break; +case 4: +#line 98 "scan.y" +{ CmdHessian( yyvsp[0].str ); + } +break; +case 5: +#line 101 "scan.y" +{ CmdStoicmat( yyvsp[0].str ); + } +break; +case 6: +#line 104 "scan.y" +{ CmdDouble( yyvsp[0].str ); + } +break; +case 7: +#line 107 "scan.y" +{ CmdReorder( yyvsp[0].str ); + } +break; +case 8: +#line 110 "scan.y" +{ CmdMex( yyvsp[0].str ); + } +break; +case 9: +#line 113 "scan.y" +{ CmdDummyindex( yyvsp[0].str ); + } +break; +case 10: +#line 116 "scan.y" +{ CmdEqntags( yyvsp[0].str ); + } +break; +case 11: +#line 119 "scan.y" +{ CmdFunction( yyvsp[0].str ); + } +break; +case 12: +#line 122 "scan.y" +{ CmdStochastic( yyvsp[0].str ); + } +break; +case 13: +#line 125 "scan.y" +{} +break; +case 14: +#line 127 "scan.y" +{} +break; +case 15: +#line 129 "scan.y" +{} +break; +case 16: +#line 131 "scan.y" +{} +break; +case 17: +#line 133 "scan.y" +{} +break; +case 18: +#line 135 "scan.y" +{} +break; +case 19: +#line 137 "scan.y" +{} +break; +case 20: +#line 139 "scan.y" +{} +break; +case 21: +#line 141 "scan.y" +{} +break; +case 22: +#line 143 "scan.y" +{} +break; +case 23: +#line 145 "scan.y" +{} +break; +case 24: +#line 147 "scan.y" +{} +break; +case 25: +#line 149 "scan.y" +{} +break; +case 26: +#line 151 "scan.y" +{} +break; +case 27: +#line 153 "scan.y" +{ CheckAll(); } +break; +case 28: +#line 155 "scan.y" +{ LookAtAll(); } +break; +case 29: +#line 157 "scan.y" +{ TransportAll(); } +break; +case 30: +#line 159 "scan.y" +{ WriteAtoms(); } +break; +case 31: +#line 161 "scan.y" +{ WriteSpecies(); } +break; +case 32: +#line 163 "scan.y" +{ WriteMatrices(); } +break; +case 33: +#line 165 "scan.y" +{ WriteOptions(); } +break; +case 34: +#line 167 "scan.y" +{ CmdUse( yyvsp[0].str ); } +break; +case 35: +#line 169 "scan.y" +{ CmdLanguage( yyvsp[0].str ); } +break; +case 36: +#line 171 "scan.y" +{ DefineInitializeNbr( yyvsp[0].str ); } +break; +case 37: +#line 173 "scan.y" +{ DefineXGrid( yyvsp[0].str ); } +break; +case 38: +#line 175 "scan.y" +{ DefineYGrid( yyvsp[0].str ); } +break; +case 39: +#line 177 "scan.y" +{ DefineZGrid( yyvsp[0].str ); } +break; +case 40: +#line 179 "scan.y" +{ + AddInlineCode( yyvsp[-2].str, InlineBuf ); + free( InlineBuf ); + } +break; +case 41: +#line 184 "scan.y" +{ ParserErrorMessage(); } +break; +case 42: +#line 186 "scan.y" +{ CmdIntegrator( yyvsp[0].str ); } +break; +case 43: +#line 188 "scan.y" +{ CmdDriver( yyvsp[0].str ); } +break; +case 44: +#line 190 "scan.y" +{ CmdRun( yyvsp[0].str ); } +break; +case 45: +#line 192 "scan.y" +{} +break; +case 46: +#line 194 "scan.y" +{ SparseData( yyvsp[0].str ); + } +break; +case 47: +#line 198 "scan.y" +{ ScanWarning("Unnecessary ';'"); + } +break; +case 51: +#line 205 "scan.y" +{ ParserErrorMessage(); } +break; +case 52: +#line 208 "scan.y" +{ switch( crt_section ) { + case ATOMDECL: DeclareAtom( yyvsp[0].str ); break; + case CHECK: SetAtomType( yyvsp[0].str, DO_CHECK ); break; + } + } +break; +case 55: +#line 217 "scan.y" +{ ParserErrorMessage(); } +break; +case 56: +#line 220 "scan.y" +{ AddLookAt( yyvsp[0].str ); + } +break; +case 59: +#line 226 "scan.y" +{ ParserErrorMessage(); } +break; +case 60: +#line 229 "scan.y" +{ AddMonitor( yyvsp[0].str ); + } +break; +case 63: +#line 235 "scan.y" +{ ParserErrorMessage(); } +break; +case 64: +#line 238 "scan.y" +{ AddTransport( yyvsp[0].str ); + } +break; +case 67: +#line 244 "scan.y" +{ ParserErrorMessage(); } +break; +case 68: +#line 247 "scan.y" +{ AddUseFile( yyvsp[0].str ); + } +break; +case 71: +#line 253 "scan.y" +{ ParserErrorMessage(); } +break; +case 72: +#line 256 "scan.y" +{ switch( crt_section ) { + case SETVAR: SetSpcType( VAR_SPC, yyvsp[0].str ); break; + case SETRAD: SetSpcType( RAD_SPC, yyvsp[0].str ); break; + case SETFIX: SetSpcType( FIX_SPC, yyvsp[0].str ); break; + } + } +break; +case 75: +#line 266 "scan.y" +{ ParserErrorMessage(); } +break; +case 78: +#line 272 "scan.y" +{ switch( crt_section ) { + case DEFVAR: DeclareSpecies( VAR_SPC, yyvsp[-2].str ); break; + case DEFRAD: DeclareSpecies( RAD_SPC, yyvsp[-2].str ); break; + case DEFFIX: DeclareSpecies( FIX_SPC, yyvsp[-2].str ); break; + } + } +break; +case 79: +#line 280 "scan.y" +{ switch( crt_section ) { + case DEFVAR: DeclareSpecies( VAR_SPC, yyvsp[0].str ); break; + case DEFRAD: DeclareSpecies( RAD_SPC, yyvsp[0].str ); break; + case DEFFIX: DeclareSpecies( FIX_SPC, yyvsp[0].str ); break; + } + } +break; +case 82: +#line 291 "scan.y" +{ AddAtom( yyvsp[0].str, yyvsp[-1].str ); + } +break; +case 83: +#line 294 "scan.y" +{ AddAtom( yyvsp[0].str, "1" ); + } +break; +case 86: +#line 300 "scan.y" +{ ParserErrorMessage(); } +break; +case 87: +#line 303 "scan.y" +{ AssignInitialValue( yyvsp[-2].str, yyvsp[0].str ); } +break; +case 90: +#line 308 "scan.y" +{ ParserErrorMessage(); + eqState = LHS; + } +break; +case 91: +#line 313 "scan.y" +{ eqState = LHS; + StoreEquationRate( yyvsp[0].str, yyvsp[-3].str ); + CheckEquation(); + } +break; +case 92: +#line 318 "scan.y" +{ eqState = LHS; + StoreEquationRate( yyvsp[0].str, " " ); + CheckEquation(); + } +break; +case 93: +#line 323 "scan.y" +{ strcpy( yyval.str, yyvsp[-1].str ); + strcat( yyval.str, yyvsp[0].str ); + } +break; +case 94: +#line 327 "scan.y" +{ strcpy( yyval.str, yyvsp[0].str ); + } +break; +case 95: +#line 331 "scan.y" +{ strcpy( yyval.str, yyvsp[-1].str ); + } +break; +case 96: +#line 335 "scan.y" +{ eqState = RHS; } +break; +case 97: +#line 338 "scan.y" +{ eqState = RAT; } +break; +case 98: +#line 341 "scan.y" +{ ProcessTerm( eqState, yyvsp[-1].str, crt_coef, crt_term ); + } +break; +case 99: +#line 344 "scan.y" +{ ProcessTerm( eqState, yyvsp[-1].str, crt_coef, crt_term ); + } +break; +case 100: +#line 347 "scan.y" +{ ProcessTerm( eqState, "+", crt_coef, crt_term ); + } +break; +case 101: +#line 351 "scan.y" +{ strcpy( crt_term, yyvsp[0].str ); + strcpy( crt_coef, yyvsp[-1].str ); + } +break; +case 102: +#line 355 "scan.y" +{ strcpy( crt_term, yyvsp[0].str ); + strcpy( crt_coef, "1" ); + } +break; +case 105: +#line 362 "scan.y" +{ ParserErrorMessage(); } +break; +case 106: +#line 365 "scan.y" +{ AddLumpSpecies( yyvsp[-2].str ); + } +break; +case 107: +#line 368 "scan.y" +{ + AddLumpSpecies( yyvsp[-2].str ); + CheckLump( yyvsp[0].str ); + } +break; +case 108: +#line 373 "scan.y" +{ + InlineBuf = AppendString( InlineBuf, yyvsp[0].str, &InlineLen, MAX_INLINE ); + } +break; +case 109: +#line 377 "scan.y" +{ + InlineBuf = malloc( MAX_INLINE ); + InlineLen = MAX_INLINE; + strcpy( InlineBuf, yyvsp[0].str); + } +break; +#line 1647 "y.tab.c" + } + yyssp -= yym; + yystate = *yyssp; + yyvsp -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + yystate = YYFINAL; + *++yyssp = YYFINAL; + *++yyvsp = yyval; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, yychar, yys); + } +#endif + } + if (yychar == 0) goto yyaccept; + goto yyloop; + } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *yyssp, yystate); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; +yyoverflow: + yyerror("yacc stack overflow"); +yyabort: + return (1); +yyaccept: + return (0); +} diff --git a/chem/KPP/kpp/kpp-2.1/src/y.tab.h b/chem/KPP/kpp/kpp-2.1/src/y.tab.h new file mode 100755 index 0000000000..d60aacb604 --- /dev/null +++ b/chem/KPP/kpp/kpp-2.1/src/y.tab.h @@ -0,0 +1,77 @@ +#define JACOBIAN 257 +#define DOUBLE 258 +#define FUNCTION 259 +#define DEFVAR 260 +#define DEFRAD 261 +#define DEFFIX 262 +#define SETVAR 263 +#define SETRAD 264 +#define SETFIX 265 +#define HESSIAN 266 +#define STOICMAT 267 +#define STOCHASTIC 268 +#define INITVALUES 269 +#define EQUATIONS 270 +#define LUMP 271 +#define INIEQUAL 272 +#define EQNEQUAL 273 +#define EQNCOLON 274 +#define LMPCOLON 275 +#define LMPPLUS 276 +#define SPCPLUS 277 +#define SPCEQUAL 278 +#define ATOMDECL 279 +#define CHECK 280 +#define CHECKALL 281 +#define REORDER 282 +#define MEX 283 +#define DUMMYINDEX 284 +#define EQNTAGS 285 +#define LOOKAT 286 +#define LOOKATALL 287 +#define TRANSPORT 288 +#define TRANSPORTALL 289 +#define MONITOR 290 +#define USES 291 +#define SPARSEDATA 292 +#define WRFCONFORM 293 +#define WRITE_ATM 294 +#define WRITE_SPC 295 +#define WRITE_MAT 296 +#define WRITE_OPT 297 +#define INITIALIZE 298 +#define XGRID 299 +#define YGRID 300 +#define ZGRID 301 +#define USE 302 +#define LANGUAGE 303 +#define INTFILE 304 +#define DRIVER 305 +#define RUN 306 +#define INLINE 307 +#define ENDINLINE 308 +#define PARAMETER 309 +#define SPCSPC 310 +#define INISPC 311 +#define INIVALUE 312 +#define EQNSPC 313 +#define EQNSIGN 314 +#define EQNCOEF 315 +#define RATE 316 +#define LMPSPC 317 +#define SPCNR 318 +#define ATOMID 319 +#define LKTID 320 +#define MNIID 321 +#define INLCTX 322 +#define INCODE 323 +#define SSPID 324 +#define EQNLESS 325 +#define EQNTAG 326 +#define EQNGREATER 327 +#define TPTID 328 +#define USEID 329 +typedef union{ + char str[80]; +} YYSTYPE; +extern YYSTYPE yylval; diff --git a/chem/KPP/kpp/kpp-2.1/util/WRF_conform/WRFUserRateLaws.f90 b/chem/KPP/kpp/kpp-2.1/util/WRF_conform/WRFUserRateLaws.f90 index ef30f2970e..f45b9d3854 100755 --- a/chem/KPP/kpp/kpp-2.1/util/WRF_conform/WRFUserRateLaws.f90 +++ b/chem/KPP/kpp/kpp-2.1/util/WRF_conform/WRFUserRateLaws.f90 @@ -7,6 +7,13 @@ ! but all the internal calculations are performed in double precision !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! Arrhenius (added by psaide 15-07-2009) + KPP_REAL FUNCTION ARR( A0,B0,C0, TEMP ) + KPP_REAL :: TEMP + KPP_REAL A0,B0,C0 + ARR = A0 * EXP( -B0 /TEMP ) * (TEMP/300._dp)**C0 + END FUNCTION ARR + !~~~> Simplified Arrhenius, with two arguments KPP_REAL FUNCTION ARR2( A0,B0, TEMP ) KPP_REAL :: TEMP @@ -14,7 +21,72 @@ KPP_REAL FUNCTION ARR2( A0,B0, TEMP ) ARR2 = A0 * EXP( -B0 /TEMP ) END FUNCTION ARR2 - +! EP2 (added by psaide 22-07-2009) + KPP_REAL FUNCTION EP2( A0,C0,A2,C2,A3,C3,TEMP,cair) + KPP_REAL :: TEMP + KPP_REAL :: cair + KPP_REAL A0,C0,A2,C2,A3,C3 + KPP_REAL K0,K2,K3 + + K0 = A0 * EXP(-C0 /TEMP) + K2 = A2 * EXP(-C2 /TEMP) + K3 = A3 * EXP(-C3 /TEMP) +! K3 = K3 * 2.45E13_dp * 1.0E6_dp + K3 = K3 * cair + EP2 = K0 + K3/(1._dp+K3/K2 ) + END FUNCTION EP2 + +! EP3 (added by psaide 15-07-2009) + KPP_REAL FUNCTION EP3(A1,C1,A2,C2,TEMP,cair) + KPP_REAL :: TEMP + KPP_REAL :: cair + KPP_REAL A1, C1, A2, C2 + KPP_REAL K1, K2 + + K1 = A1 * EXP(-C1 /TEMP) + K2 = A2 * EXP(-C2 /TEMP) +! EP3 = K1 + K2*(1.0E6_dp * 2.45E13_dp) + EP3 = K1 + K2*cair + END FUNCTION EP3 + +! FALL (added by psaide 15-07-2009) + KPP_REAL FUNCTION FALL( A0,B0,C0,A1,B1,C1,CF,TEMP,cair) + + INTRINSIC LOG10 + + KPP_REAL :: TEMP + KPP_REAL :: cair + KPP_REAL A0,B0,C0,A1,B1,C1,CF + KPP_REAL K0, K1 + + K0 = A0 * EXP(-B0 /TEMP)* (TEMP/300._dp)**C0 + K1 = A1 * EXP(-B1 /TEMP)* (TEMP/300._dp)**C1 +! K0 = K0 * 2.45E13_dp * 1.0E6_dp + K0 = K0 * cair + K1 = K0/K1 + FALL = (K0/(1._dp+K1))*CF**(1._dp/(1._dp+(LOG10(K1))**2)) + + END FUNCTION FALL + +! FALL2 (added by psaide 28-10-2009) + KPP_REAL FUNCTION F2( A0,B0,C0,A1,B1,C1,CF,CN,TEMP,cair) + + INTRINSIC LOG10 + + KPP_REAL :: TEMP + KPP_REAL :: cair + KPP_REAL A0,B0,C0,A1,B1,C1,CF,CN + KPP_REAL K0, K1 + + K0 = A0 * EXP(-B0 /TEMP)* (TEMP/300._dp)**C0 + K1 = A1 * EXP(-B1 /TEMP)* (TEMP/300._dp)**C1 +! K0 = K0 * 2.45E13_dp * 1.0E6_dp + K0 = K0 * cair + K1 = K0/K1 + F2 = (K0/(1._dp+K1))*CF**(1._dp/(1._dp+(LOG10(K1)/CN)**2)) + + END FUNCTION F2 + !------------------------------------ ! Troe reactions (as in Stockwell et al, 1997) diff --git a/chem/KPP/mechanisms/cbmz_bb/cbmz_bb.eqn b/chem/KPP/mechanisms/cbmz_bb/cbmz_bb.eqn index 40bcf02cc4..0f03656238 100644 --- a/chem/KPP/mechanisms/cbmz_bb/cbmz_bb.eqn +++ b/chem/KPP/mechanisms/cbmz_bb/cbmz_bb.eqn @@ -23,56 +23,55 @@ {020:J20} ISOPRD + hv = 0.97 C2O3 + 0.33 HO2 + 0.33 CO + 0.7 CH3O2 + 0.2 HCHO + 0.07 ALD2 + 0.03 AONE : 0.025 * j(Pj_ch2om) ; - {021:001} O1D+M=O3P : .78084* ARR3(1.8D-11, -110.0_dp, TEMP) + .20946e0* ARR3(3.2D-11, -70.0_dp, TEMP); - {022:002} O1D{+N2} = O3P + M{N2} : ARR3(1.8D-11, -110._dp, TEMP)*0.0 ; - {023:003} O1D+H2O = 2 OH : 2.2D-10 ; - {024:004} O3P+M{+O2} = O3 : .20946e0*ARR3MS(6.0D-34,2.3_dp,TEMP,C_M) ; - {025:005} O3P + O3 =M {2O2} : ARR3(8.0D-12, 2060._dp, TEMP) ; - {026:006} O3P + NO2 = NO{+O2} : ARR3(6.5D-12, 120._dp, TEMP) ; - {027:007} O3P + NO2 = NO3 : TROEMS(9.0D-32, -2.0_dp, 2.2D-11, 0.0_dp, TEMP, C_M) ; - {028:008} O3P + NO = NO2 : TROEMS(9.0D-32, -1.5_dp, 3.0D-11, 0.0_dp, TEMP, C_M) ; - {029:009} O3 + NO = NO2{+O2} : ARR3(2.0D-12, 1400._dp, TEMP) ; - {030:010} O3 + NO2 = NO3{+O2} : ARR3(1.2D-13, 2450._dp, TEMP) ; - {031:011} O3 + OH = HO2{+O2} : ARR3(1.6D-12, 940._dp, TEMP) ; - {032:012} O3 + HO2 = OH{+2 O2} : ARR3(1.1D-14, 500._dp, TEMP) ; - {033:013} OH+M = HO2+H2O : 5.31D-7*ARR3(5.5D-12, 2000._dp, TEMP) ; - {034:014} OH + NO = HONO : TROEMS(7.0D-31 ,-2.6_dp, 3.6D-11, -0.1_dp, TEMP, C_M) ; - {035:015} OH + NO2 = HNO3 : TROEMS(2.6D-30 ,-3.2_dp, 2.4D-11, -1.3_dp, TEMP, C_M) ; - {036:016} OH + NO3 = HO2 + NO2 : 2.2D-11 ; - {037:017} OH + HONO = NO2 : ARR3(1.8D-11, 390._dp, TEMP) ; - {038:018} OH + HNO3 = NO3 : RK_HO_HNO3(TEMP, C_M) ; - {039:019} OH + HNO4 = NO2 : ARR3(1.3D-12, -380._dp, TEMP); - {040:020} OH + HO2 = H2O{+O2} : ARR3(4.8D-11, -250._dp, TEMP) ; - {041:021} OH + H2O2 = HO2 : ARR3(2.9D-12, 160._dp, TEMP) ; - {042:022} HO2 + HO2 = H2O2 : RK_2HO2(TEMP, C_M) ; - {043:023} HO2 + HO2 + H2O = H2O2 : RK_2HO2_H2O(TEMP, C_M) ; - {044:024} HO2 + NO = OH + NO2 : ARR3(3.5D-12, -250._dp, TEMP) ; - {045:025} HO2 + NO2 = HNO4 : TROEMS(1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; - {046:026} HO2 + NO2 = HONO : 5.0D-16 ; - {047:027} HNO4 = HO2 + NO2 : TROEEMS(4.8D+26, 10900._dp, 1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; - {048:028} NO3 + NO = NO2 + NO2 : ARR3(1.5D-11, -170._dp, TEMP) ; - {049:029} NO3 + NO2 = NO + NO2 : ARR3(4.5D-14, 1260._dp, TEMP) ; - {050:030} NO3 + NO2 = N2O5 : TROEMS(2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; - {051:031} NO3 + NO3 = 2.0 NO2 : ARR3(8.5D-13, 2450._dp, TEMP) ; - {052:032} NO3 + HO2 = 0.3 HNO3 + .7 NO2 + .7 OH : 3.5D-12 ; - {053:033} N2O5+H2O = 2.0 HNO3 : 2.0D-21 ; - {054:034} N2O5 = NO3 + NO2 : TROEEMS(3.7D+26, 11000._dp, 2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; - {055:035} CO + OH = HO2 : RK_CO_HO(TEMP, C_M) ; - {056:036} SO2 + OH = H2SO4 + HO2 : TROEMS(3.0D-31, -3.3_dp, 1.5D-12, 0.0_dp, TEMP, C_M) ; - {057:037} OH+CH4 = CH3O2 : TEMP**0.667 * ARR3(2.8D-14, 1575._dp, TEMP) ; - {058:038} C2H6 + OH = ETHP : TEMP**2 * ARR3(1.5D-17, 492._dp, TEMP) ; - {059:039} PAR + OH = RO2 : 8.1D-13 ; - {060:040} HCHO + OH = HO2 + CO : 1.0D-11 ; - {061:041} HCHO + NO3 = HNO3 + HO2 + CO : ARR3(3.4D-13, 1900._dp, TEMP) ; - {062:042} ALD2 + OH = C2O3 : ARR3(5.6D-12, -270._dp, TEMP) ; - {063:043} ALD2 + NO3 = C2O3 + HNO3 : ARR3(1.4D-12, 1900._dp, TEMP) ; - {064:044} AONE + OH = ANO2 : TEMP**2 * ARR3(5.3D-18, 230._dp, TEMP) ; - {065:045} MGLY + OH = XO2 + C2O3 : 1.7D-11 ; - {066:046} MGLY + NO3 = HNO3 + C2O3 + CO : ARR3(1.4D-12, 1900._dp, TEMP) ; - {067:047} ETH + O3 = HCHO + .22 HO2 + .12 OH + - .24 CO {+ .24CO2} + .52 HCOOH : ARR3(1.2D-14, 2630._dp, TEMP) ; - {068:048} ETH + OH = XO2 + 1.56 HCHO + HO2 + .22 ALD2 : TROEMS(1.0D-28, -0.8_dp, 8.8D-12, 0.0_dp, TEMP, C_M) ; - {069:049} OLET + O3 = .57 HCHO + .47 ALD2 + + {021:001} O1D+M=O3P : .79* ARR3(1.8D-11, -110.0_dp, TEMP) + .21* ARR3(3.2D-11, -70.0_dp, TEMP); + {022:002} O1D+H2O = 2 OH : 2.2D-10 ; + {023:003} O3P+M{+O2} = O3 : .21*ARR3MS(6.0D-34,2.3_dp,TEMP,C_M) ; + {024:004} O3P + O3 =0.42M {2O2} : ARR3(8.0D-12, 2060._dp, TEMP) ; + {025:005} O3P + NO2 = NO : ARR3(6.5D-12, 120._dp, TEMP) ; + {026:006} O3P + NO2 = NO3 : TROEMS(9.0D-32, -2.0_dp, 2.2D-11, 0.0_dp, TEMP, C_M) ; + {027:007} O3P + NO = NO2 : TROEMS(9.0D-32, -1.5_dp, 3.0D-11, 0.0_dp, TEMP, C_M) ; + {028:008} O3 + NO = NO2 : ARR3(2.0D-12, 1400._dp, TEMP) ; + {029:009} O3 + NO2 = NO3 : ARR3(1.2D-13, 2450._dp, TEMP) ; + {030:010} O3 + OH = HO2 : ARR3(1.6D-12, 940._dp, TEMP) ; + {031:011} O3 + HO2 = OH : ARR3(1.1D-14, 500._dp, TEMP) ; + {032:012} OH+M = HO2+H2O : 5.8D-7*ARR3(5.5D-12, 2000._dp, TEMP) ; + {033:013} OH + NO = HONO : TROEMS(7.0D-31 ,-2.6_dp, 3.6D-11, -0.1_dp, TEMP, C_M) ; + {034:014} OH + NO2 = HNO3 : TROEMS(2.5D-30 ,-4.4_dp, 1.6D-11, -1.7_dp, TEMP, C_M) ; + {035:015} OH + NO3 = HO2 + NO2 : 2.2D-11 ; + {036:016} OH + HONO = NO2 : ARR3(1.8D-11, 390._dp, TEMP) ; + {037:017} OH + HNO3 = NO3 : RK_HO_HNO3(TEMP, C_M) ; + {038:018} OH + HNO4 = NO2 : ARR3(1.3D-12, -380._dp, TEMP); + {039:019} OH + HO2 = H2O +0.21M : ARR3(4.8D-11, -250._dp, TEMP) ; + {040:020} OH + H2O2 = HO2 : ARR3(2.9D-12, 160._dp, TEMP) ; + {041:021} HO2 + HO2 = H2O2 : RK_2HO2(TEMP, C_M) ; + {042:022} HO2 + HO2 + H2O = H2O2 : RK_2HO2_H2O(TEMP, C_M) ; + {043:023} HO2 + NO = OH + NO2 : ARR3(3.5D-12, -250._dp, TEMP) ; + {044:024} HO2 + NO2 = HNO4 : TROEMS(1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; + {045:025} HO2 + NO2 = HONO : 5.0D-16 ; + {046:026} HNO4 = HO2 + NO2 : TROEEMS(4.8D+26, 10900._dp, 1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; + {047:027} NO3 + NO = NO2 + NO2 : ARR3(1.5D-11, -170._dp, TEMP) ; + {048:028} NO3 + NO2 = NO + NO2 : ARR3(4.5D-14, 1260._dp, TEMP) ; + {049:029} NO3 + NO2 = N2O5 : TROEMS(2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; + {050:030} NO3 + NO3 = 2.0 NO2 : ARR3(8.5D-13, 2450._dp, TEMP) ; + {051:031} NO3 + HO2 = 0.3 HNO3 + .7 NO2 + .7 OH : 3.5D-12 ; + {052:032} N2O5+H2O = 2.0 HNO3 : 2.0D-21 ; + {053:033} N2O5 = NO3 + NO2 : TROEEMS(3.7D+26, 11000._dp, 2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; + {054:034} CO + OH = HO2 : RK_CO_HO(TEMP, C_M) ; + {055:035} SO2 + OH = H2SO4 + HO2 : TROEMS(3.0D-31, -3.3_dp, 1.5D-12, 0.0_dp, TEMP, C_M) ; + {056:036} OH+CH4 = CH3O2 : TEMP**0.667 * ARR3(2.8D-14, 1575._dp, TEMP) ; + {057:037} C2H6 + OH = ETHP : TEMP**2 * ARR3(1.5D-17, 492._dp, TEMP) ; + {058:038} PAR + OH = RO2 : 8.1D-13 ; + {059:039} HCHO + OH = HO2 + CO : 1.0D-11 ; + {060:040} HCHO + NO3 = HNO3 + HO2 + CO : ARR3(3.4D-13, 1900._dp, TEMP) ; + {061:041} ALD2 + OH = C2O3 : ARR3(5.6D-12, -270._dp, TEMP) ; + {062:042} ALD2 + NO3 = C2O3 + HNO3 : ARR3(1.4D-12, 1900._dp, TEMP) ; + {063:043} AONE + OH = ANO2 : TEMP**2 * ARR3(5.3D-18, 230._dp, TEMP) ; + {064:044} MGLY + OH = XO2 + C2O3 : 1.7D-11 ; + {065:045} MGLY + NO3 = HNO3 + C2O3 + CO : ARR3(1.4D-12, 1900._dp, TEMP) ; + {066:046} ETH + O3 = HCHO + .22 HO2 + .12 OH + + .24 CO {+ .24CO2} + .52 HCOOH : ARR3(1.2D-14, 2630._dp, TEMP) ; + {067:047} ETH + OH = XO2 + 1.56 HCHO + HO2 + .22 ALD2 : TROEMS(1.0D-28, -0.8_dp, 8.8D-12, 0.0_dp, TEMP, C_M) ; + {068:048} OLET + O3 = .57 HCHO + .47 ALD2 + .33 OH + .26 HO2 {+ .08H2}+ .07 CH3O2 + .06 ETHP + .03 RO2 + .13 C2O3 + @@ -80,123 +79,123 @@ .06CH4 + .01C2H6 + .31 CO {+ .22 CO2} + .22 HCOOH + .09RCOOH +1.06 XPAR : ARR3(4.2D-15, 1800._dp, TEMP) ; - {070:050} OLEI + O3 = 1.03 ALD2 +.07 AONE + + {069:049} OLEI + O3 = 1.03 ALD2 +.07 AONE + .6 OH + .22 HO2 + .1 CH3O2 + .05 ETHP + .09 RO2 + .11 ANO2 + .19 C2O3 + .07 MGLY + .04 CH3OH + .08 CH4 + .01C2H6 + .3 CO {+ - .18CO2} + .16 RCOOH + 2.26 XPAR : ARR3(8.9D-16, 392._dp, TEMP) ; - {071:051} OLET + OH = XO2 + HO2 + HCHO + ALD2 + XPAR : ARR3(5.8D-12, -478._dp, TEMP) ; - {072:052} OLEI + OH = XO2 + HO2 + .23 AONE + + .18CO2} + .16 RCOOH + 2.26 XPAR : ARR3(8.9D-16, 392._dp, TEMP) ; + {070:050} OLET + OH = XO2 + HO2 + HCHO + ALD2 + XPAR : ARR3(5.8D-12, -478._dp, TEMP) ; + {071:051} OLEI + OH = XO2 + HO2 + .23 AONE + 1.77 ALD2 + 2.23 XPAR : ARR3(2.9D-11, -255._dp, TEMP) ; - {073:053} OLET + NO3 = NAP : ARR3(3.1D-13, 1010._dp, TEMP) ; - {074:054} OLEI + NO3 = NAP : 2.5D-12; - {075:055} TOL + OH = .08 XO2 + .12 CRES + + {072:052} OLET + NO3 = NAP : ARR3(3.1D-13, 1010._dp, TEMP) ; + {073:053} OLEI + NO3 = NAP : 2.5D-12; + {074:054} TOL + OH = .08 XO2 + .12 CRES + .2 HO2 + .8 TO2 : ARR3(2.1D-12, -322._dp, TEMP) ; - {076:056} XYL + OH = .5 XO2 + .55 HO2 + + {075:055} XYL + OH = .5 XO2 + .55 HO2 + .05 CRES + .8 MGLY + 1.1 PAR + .45 TO2 : ARR3(1.7D-11, -116._dp, TEMP) ; - {077:057} TO2 + NO = .95 NO2 + .95 OPEN + + {076:056} TO2 + NO = .95 NO2 + .95 OPEN + .95 HO2 + .05 ONIT : 8.1D-12 ; - {078:058} CRES + OH = .4 CRO + .6 XO2 + + {077:057} CRES + OH = .4 CRO + .6 XO2 + .6 HO2 + .3 OPEN : 4.1D-11 ; - {079:059} CRES + NO3 = CRO + HNO3 : 2.2D-11 ; - {080:060} CRO + NO2 = ONIT : 1.4D-11; - {081:061} OPEN + OH = XO2 + C2O3 + 2 CO + + {078:058} CRES + NO3 = CRO + HNO3 : 2.2D-11 ; + {079:059} CRO + NO2 = ONIT : 1.4D-11; + {080:060} OPEN + OH = XO2 + C2O3 + 2 CO + 2 HO2 + HCHO : 3.0D-11 ; - {082:062} OPEN + O3 = .03 ALD2 + .62 C2O3 + + {081:061} OPEN + O3 = .03 ALD2 + .62 C2O3 + .7 HCHO + .69 CO + .08 OH + .03 XO2 + .76 HO2 + .2 MGLY : ARR3(5.4D-17, 500._dp, TEMP); - {083:063} ISOP + OH = ISOPP + .08 XO2 : ARR3(2.6D-11, -409._dp, TEMP); - {084:064} ISOP + O3 = .6 HCHO + .65 ISOPRD + + {082:062} ISOP + OH = ISOPP + .08 XO2 : ARR3(2.6D-11, -409._dp, TEMP); + {083:063} ISOP + O3 = .6 HCHO + .65 ISOPRD + .27 OH + .07 CO + .39 RCOOH + .07 HO2 + .15 ALD2 + .2 XO2 + .2 C2O3 : ARR3(1.2D-14, 2013._dp, TEMP) ; - {085:065} ISOP + NO3 = ISOPN : ARR3(3.0D-12, 446._dp, TEMP) ; - {086:066} ISOPRD + OH = .5 C2O3 + .5 ISOPO2 + .2 XO2 : 3.3D-11 ; - {087:067} ISOPRD + O3 = .27 OH + .1 HO2 + + {084:064} ISOP + NO3 = ISOPN : ARR3(3.0D-12, 446._dp, TEMP) ; + {085:065} ISOPRD + OH = .5 C2O3 + .5 ISOPO2 + .2 XO2 : 3.3D-11 ; + {086:066} ISOPRD + O3 = .27 OH + .1 HO2 + .11 C2O3 + .07 XO2 + .05 CH3O2 + .16 CO + .15 HCHO + .02 ALD2 + .09 AONE + .85 MGLY + .46 RCOOH : 7.0D-18 ; - {088:068} ISOPRD + NO3 = .07 C2O3 + .07 HNO3 + + {087:067} ISOPRD + NO3 = .07 C2O3 + .07 HNO3 + .64 CO + .28 HCHO + .93 ONIT + .28 ALD2 + .93 HO2 + .93 XO2 + 1.86 PAR : 1.0D-15 ; - {089:069} ISOPP + NO = .09 ONIT + .91 NO2 + + {088:068} ISOPP + NO = .09 ONIT + .91 NO2 + .91 HO2 + .63 HCHO + .91 ISOPRD + 0.18 PAR : 4.0D-12 ; - {090:070} ISOPN + NO = 1.2 NO2 + .8 ONIT + + {089:069} ISOPN + NO = 1.2 NO2 + .8 ONIT + .8 ALD2 + .8 HO2 + .2 ISOPRD + 1.6 PAR : 4.0D-12 ; - {091:071} ISOPO2 + NO = NO2 + HO2 + .59 CO + + {090:070} ISOPO2 + NO = NO2 + HO2 + .59 CO + .55 ALD2 + .25 HCHO + .34 MGLY + .63 AONE : 4.0D-12; - {092:072} ISOPP + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; - {093:073} ISOPN + HO2 = ONIT + 2 PAR : ARR3(1.7D-13, -1300._dp, TEMP) ; - {094:074} ISOPO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; - {095:075} CH3OOH + OH = .7 CH3O2 + .3 HCHO + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; - {096:076} ETHOOH + OH = .7 ETHP + .3 ALD2 + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; - {097:077} ROOH + OH = .77 RO2 + .19 MGLY + + {091:071} ISOPP + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {092:072} ISOPN + HO2 = ONIT + 2 PAR : ARR3(1.7D-13, -1300._dp, TEMP) ; + {093:073} ISOPO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {094:074} CH3OOH + OH = .7 CH3O2 + .3 HCHO + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; + {095:075} ETHOOH + OH = .7 ETHP + .3 ALD2 + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; + {096:076} ROOH + OH = .77 RO2 + .19 MGLY + .04 ALD2 + .23 OH + .42 XPAR : ARR3(3.8D-12, -200._dp, TEMP) ; - {098:078} ONIT + OH = NAP : ARR3(1.6D-11, 540._dp, TEMP) ; - {099:079} C2O3 + NO2 = PAN : TROEMS(9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; - {100:080} PAN = C2O3 + NO2 : TROEEMS(1.1D+28, 14000._dp, 9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; - {101:081} CH3OH + OH = HCHO + HO2 : ARR3(6.7D-12, 600._dp, TEMP) ; - {102:082} CH3O2 + NO = HCHO + HO2 + NO2 : ARR3(3.0D-12, -280._dp, TEMP) ; - {103:083} ETHP + NO = ALD2 + HO2 + NO2 : ARR3(2.6D-12, -365._dp, TEMP) ; - {104:084} RO2 + NO = .16 ONIT + .84 NO2 + + {097:077} ONIT + OH = NAP : ARR3(1.6D-11, 540._dp, TEMP) ; + {098:078} C2O3 + NO2 = PAN : TROEMS(9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; + {099:079} PAN = C2O3 + NO2 : TROEEMS(1.1D+28, 14000._dp, 9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; + {100:080} CH3OH + OH = HCHO + HO2 : ARR3(6.7D-12, 600._dp, TEMP) ; + {101:081} CH3O2 + NO = HCHO + HO2 + NO2 : ARR3(3.0D-12, -280._dp, TEMP) ; + {102:082} ETHP + NO = ALD2 + HO2 + NO2 : ARR3(2.6D-12, -365._dp, TEMP) ; + {103:083} RO2 + NO = .16 ONIT + .84 NO2 + .34 XO2 + .62 AONE + .25 ALD2 + .08 ETHP + .76 HO2 + 1.68 XPAR : 4.0D-12 ; - {105:085} C2O3 + NO = NO2 + CH3O2 {+CO2} : ARR3(5.3D-12, -360._dp, TEMP) ; - {106:086} ANO2 + NO = NO2 + C2O3 + HCHO : 4.0D-12 ; - {107:087} NAP + NO = 1.5 NO2 + .5 HCHO + + {104:084} C2O3 + NO = NO2 + CH3O2 {+CO2} : ARR3(5.3D-12, -360._dp, TEMP) ; + {105:085} ANO2 + NO = NO2 + C2O3 + HCHO : 4.0D-12 ; + {106:086} NAP + NO = 1.5 NO2 + .5 HCHO + .5 ALD2 + .5 ONIT + - .5 HO2 + XPAR : 4.0D-12 ; - {108:088} XO2 + NO = NO2 : 4.0D-12 ; + .5 HO2 + XPAR : 4.0D-12 ; + {107:087} XO2 + NO = NO2 : 4.0D-12 ; - {109:089} CH3O2 + NO3 = HCHO + HO2 + NO2 : 1.1D-12 ; - {110:090} ETHP + NO3 = ALD2 + HO2 + NO2 : 2.5D-12 ; - {111:091} RO2 + NO3 = NO2 + .4 XO2 + + {108:088} CH3O2 + NO3 = HCHO + HO2 + NO2 : 1.1D-12 ; + {109:089} ETHP + NO3 = ALD2 + HO2 + NO2 : 2.5D-12 ; + {110:090} RO2 + NO3 = NO2 + .4 XO2 + .74 AONE + .3 ALD2 + .1 ETHP + .9 HO2 + 1.98 XPAR : 2.5D-12 ; - {112:092} C2O3 + NO3 = NO2 + CH3O2 : 4.0D-12 ; - {113:093} ANO2 + NO3 = NO2 + C2O3 + HCHO : 1.2D-12; - {114:094} NAP + NO3 = 1.5 NO2 + .5 HCHO + + {111:091} C2O3 + NO3 = NO2 + CH3O2 : 4.0D-12 ; + {112:092} ANO2 + NO3 = NO2 + C2O3 + HCHO : 1.2D-12; + {113:093} NAP + NO3 = 1.5 NO2 + .5 HCHO + .5 ALD2 + .5 ONIT + .5 HO2 + XPAR : 4.0D-12 ; - {115:095} XO2 + NO3 = NO2 : 2.5D-12 ; - {116:096} CH3O2 + HO2 = CH3OOH : ARR3(3.8D-13, -800._dp, TEMP) ; - {117:097} ETHP + HO2 = ETHOOH : ARR3(7.5D-13, -700._dp, TEMP) ; - {118:098} RO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; - {119:099} C2O3 + HO2 = .4 RCOOH + .4 O3 : ARR3(4.5D-13, -1000._dp, TEMP) ; - {120:100} ANO2 + HO2 = ROOH : ARR3(1.2D-13, -1300._dp, TEMP) ; - {121:101} NAP + HO2 = ONIT : ARR3(1.7D-13, -1300._dp, TEMP) ; - {122:102} XO2 + HO2 = PROD : ARR3(1.7D-13, -1300._dp, TEMP) ; + {114:094} XO2 + NO3 = NO2 : 2.5D-12 ; + {115:095} CH3O2 + HO2 = CH3OOH : ARR3(3.8D-13, -800._dp, TEMP) ; + {116:096} ETHP + HO2 = ETHOOH : ARR3(7.5D-13, -700._dp, TEMP) ; + {117:097} RO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {118:098} C2O3 + HO2 = .4 RCOOH + .4 O3 : ARR3(4.5D-13, -1000._dp, TEMP) ; + {119:099} ANO2 + HO2 = ROOH : ARR3(1.2D-13, -1300._dp, TEMP) ; + {120:100} NAP + HO2 = ONIT : ARR3(1.7D-13, -1300._dp, TEMP) ; + {121:101} XO2 + HO2 = PROD : ARR3(1.7D-13, -1300._dp, TEMP) ; - {123:103} ANOL + OH = ALD2 + HO2 : ARR3(7.0D-12, 235._dp, TEMP) ; - {124:104} PAR + XPAR = PROD : 1.0D-11 ; - {125:105} HCl = HCl : 1.0 ; - {126:106} NH3 = NH3 : 1.0 ; - {127:107} H2SO4 = H2SO4 : 1.0 ; - {128:108} CH3O2 = .66 HCHO + .32 HO2 + .34 CH3OH : peroxy(1,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {129:109} ETHP = .8 ALD2 + .6 HO2 + .2 C2H6 : peroxy(2,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {130:110} RO2 = .24 XO2 + .21 ALD2 + + {122:102} ANOL + OH = ALD2 + HO2 : ARR3(7.0D-12, 235._dp, TEMP) ; + {123:103} PAR + XPAR = PROD : 1.0D-11 ; + {124:104} HCl = HCl : 1.0 ; + {125:105} NH3 = NH3 : 1.0 ; + {126:106} H2SO4 = H2SO4 : 1.0 ; + {127:107} CH3O2 = .66 HCHO + .32 HO2 + .34 CH3OH : peroxy(1,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {128:108} ETHP = .8 ALD2 + .6 HO2 + .2 C2H6 : peroxy(2,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {129:109} RO2 = .24 XO2 + .21 ALD2 + .57 AONE + .06 ETHP + .54 HO2 + 1.25 XPAR : peroxy(3,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {131:111} C2O3 = CH3O2 : peroxy(4,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {132:112} ANO2 = .7 C2O3 + .7 HCHO + + {130:110} C2O3 = CH3O2 : peroxy(4,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {131:111} ANO2 = .7 C2O3 + .7 HCHO + .15 MGLY + .15 AONE : peroxy(5,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {133:113} NAP = .5 NO2 + .5 HCHO + .5 ALD2 + .5 ONIT + + {132:112} NAP = .5 NO2 + .5 HCHO + .5 ALD2 + .5 ONIT + XPAR : peroxy(6,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {134:114} ISOPP = ISOPRD : peroxy(7,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {135:115} ISOPN = ALD2 + ONIT + 2 PAR : peroxy(8,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {136:116} ISOPO2 = .5 ALD2 + .5 AONE : peroxy(9,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {133:113} ISOPP = ISOPRD : peroxy(7,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {134:114} ISOPN = ALD2 + ONIT + 2 PAR : peroxy(8,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {135:115} ISOPO2 = .5 ALD2 + .5 AONE : peroxy(9,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; - {137:117} XO2 = PROD : peroxy(10,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {136:116} XO2 = PROD : peroxy(10,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; diff --git a/chem/KPP/mechanisms/cbmz_mosaic/atoms_red b/chem/KPP/mechanisms/cbmz_mosaic/atoms_red new file mode 100755 index 0000000000..2578ad27ca --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/atoms_red @@ -0,0 +1,107 @@ +#ATOMS + H { 1 Hydrogen }; + He { 2 Helium }; + Li { 3 Litium }; + Be { 4 }; + B { 5 }; + C { 6 }; + N { 7 }; + O { 8 }; + F { 9 }; + Ne { 10 }; + Na { 11 }; + Mg { 12 }; + Al { 13 }; + Si { 14 }; + P { 15 }; + S { 16 }; + Cl { 17 }; + Ar { 18 }; + K { 19 }; + Ca { 20 }; + Sc { 21 }; + Ti { 22 }; + V { 23 }; + Cr { 24 }; + Mn { 25 }; + Fe { 26 }; + Co { 27 }; + Ni { 28 }; + Cu { 29 }; + Zn { 30 }; + Ga { 31 }; + Ge { 32 }; + As { 33 }; + Se { 34 }; + Br { 35 }; + Kr { 36 }; + Rb { 37 }; + Sr { 38 }; + Y { 39 }; + Zr { 40 }; + Nb { 41 }; + Mu { 42 }; + Tc { 43 }; + Ru { 44 }; + Rh { 45 }; + Pd { 46 }; + Ag { 47 }; + Cd { 48 }; + In { 49 }; + Sn { 50 }; + Sb { 51 }; + Te { 52 }; + I { 53 }; + Xe { 54 }; + Cs { 55 }; + Ba { 56 }; + La { 57 }; + Ce { 58 }; + Pr { 59 }; + Nd { 60 }; + Pm { 61 }; + Sm { 62 }; + Eu { 63 }; + Gd { 64 }; + Tb { 65 }; + Dy { 66 }; + Ho { 67 }; + Er { 68 }; + Tm { 69 }; + Yb { 70 }; + Lu { 71 }; + Hf { 72 }; + Ta { 73 }; + W { 74 }; + Re { 75 }; + Os { 76 }; + Ir { 77 }; + Pt { 78 }; + Au { 79 }; + Hg { 80 }; + Tl { 81 }; + Pb { 82 }; + Bi { 83 }; + Po { 84 }; + At { 85 }; + Rn { 86 }; + Fr { 87 }; + Ra { 88 }; + Ac { 89 }; + Th { 90 }; + Pa { 91 }; + U { 92 }; + Np { 93 }; + Pu { 94 }; + Am { 95 }; + Cm { 96 }; + Bk { 97 }; + Cf { 98 }; + Es { 99 }; + Fm {100 }; + Md {101 }; + No {102 }; + Lr {103 }; + Unq {104 }; + Unp {105 }; + Unh {106 }; diff --git a/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.def b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.def new file mode 100755 index 0000000000..3c8f98d049 --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.def @@ -0,0 +1,180 @@ +#include atoms_red +#include ./cbmz_mosaic.spc +#include ./cbmz_mosaic.eqn + + + + +#INLINE F90_RATES +!__________________________________________________ + + REAL(KIND=dp) FUNCTION ARR3( A0,B0, TEMP ) + REAL(KIND=dp),INTENT(IN) :: TEMP + REAL(KIND=dp),INTENT(IN):: A0,B0 + ARR3 = A0 * EXP(- B0 /TEMP ) + END FUNCTION ARR3 +!__________________________________________________ + + REAL(KIND=dp) FUNCTION ARR3MS( A0,B0,TEMP,C_M ) + REAL(KIND=dp), INTENT(IN) :: A0,B0 + REAL(KIND=dp), INTENT(IN) :: TEMP,C_M + + ARR3MS = C_M*A0 *(TEMP/300._dp)**(-B0) + END FUNCTION ARR3MS +!__________________________________________________ + + REAL(KIND=dp) FUNCTION TROEMS(k0_300K,n,kinf_300K,m,TEMP,C_M) + + INTRINSIC LOG10 + + REAL(KIND=dp), INTENT(IN) :: TEMP ! TEMPerature [K] + REAL(KIND=dp), INTENT(IN) :: C_M ! air concentration [molecules/cm3] + REAL(KIND=dp), INTENT(IN) :: k0_300K ! low pressure limit at 300 K + REAL(KIND=dp), INTENT(IN) :: n ! exponent for low pressure limit + REAL(KIND=dp), INTENT(IN) :: kinf_300K ! high pressure limit at 300 K + REAL(KIND=dp), INTENT(IN) :: m ! exponent for high pressure limit + REAL(KIND=dp) :: zt_help, k0_T, kinf_T, k_ratio + + zt_help = TEMP/300._dp + k0_T = k0_300K * zt_help**(n) * C_M ! k_0 at current T + kinf_T = kinf_300K * zt_help**(m) ! k_inf at current T + k_ratio = k0_T/kinf_T + TROEMS = k0_T/(1._dp+k_ratio)*0.6_dp**(1._dp/(1._dp+LOG10(k_ratio)**2)) + + END FUNCTION TROEMS +!__________________________________________________ + + REAL(KIND=dp) FUNCTION TROEEMS(A, B, k0_300K,n,kinf_300K,m,TEMP,C_M) + + INTRINSIC LOG10 + + REAL(KIND=dp), INTENT(IN) :: TEMP ! TEMPerature [K] + REAL(KIND=dp), INTENT(IN) :: C_M ! air concentration [molecules/cm3] + REAL(KIND=dp), INTENT(IN) :: k0_300K ! low pressure limit at 300 K + REAL(KIND=dp), INTENT(IN) :: n ! exponent for low pressure limit + REAL(KIND=dp), INTENT(IN) :: kinf_300K ! high pressure limit at 300 K + REAL(KIND=dp), INTENT(IN) :: m ! exponent for high pressure limit + REAL(KIND=dp), INTENT(IN) :: A, B + REAL(KIND=dp) :: zt_help, k0_T, kinf_T, k_ratio, troe + + + zt_help = TEMP/300._dp + k0_T = k0_300K * zt_help**(n) * C_M ! k_0 at current T + kinf_T = kinf_300K * zt_help**(m) ! k_inf at current T + k_ratio = k0_T/kinf_T + troe = k0_T/(1._dp+k_ratio)*0.6_dp**(1._dp/(1._dp+LOG10(k_ratio)**2)) + + TROEEMS = A * EXP( - B / TEMP) * troe + END FUNCTION TROEEMS + +!__________________________________________________ + + + REAL(KIND=dp) FUNCTION k46( TEMP, C_M ) + REAL(KIND=dp), INTENT(IN) :: TEMP, C_M + REAL(KIND=dp) :: k0, k2, k3 + k0=7.2E-15_dp * EXP(785._dp/TEMP) + k2=4.1E-16_dp * EXP(1440._dp/TEMP) + k3=1.9E-33_dp * EXP(725._dp/TEMP) + k46=k0+k3/(1+k3/k2) + END FUNCTION k46 +!__________________________________________________ + REAL(KIND=dp) FUNCTION RK_HO_HNO3( TEMP, C_M ) + REAL(KIND=dp), INTENT(IN) :: TEMP, C_M + REAL(KIND=dp) :: k1, k2, k3 + k1=7.2E-15_dp * EXP(785._dp/TEMP) + k2=1.9E-33_dp * EXP(725._dp/TEMP) + k3=4.1E-16_dp * EXP(1440._dp/TEMP) + RK_HO_HNO3=k1+(C_M*k2)/(1+(C_M*k2)/k3) + END FUNCTION RK_HO_HNO3 +!__________________________________________________ + REAL(KIND=dp) FUNCTION RK_2HO2( TEMP, C_M ) + REAL(KIND=dp), INTENT(IN) :: TEMP, C_M + REAL(KIND=dp) :: k1, k2, k3 + k1=2.3E-13_dp * EXP(600._dp/TEMP) + k2=1.7E-33_dp * EXP(1000._dp/TEMP) + RK_2HO2=k1+(C_M*k2) + END FUNCTION RK_2HO2 +!__________________________________________________ + REAL(KIND=dp) FUNCTION RK_2HO2_H2O( TEMP, C_M ) + REAL(KIND=dp), INTENT(IN) :: TEMP, C_M + REAL(KIND=dp) :: k1, k2, k3 + k1=2.3E-13_dp * EXP(600._dp/TEMP) + k2=1.7E-33_dp * EXP(1000._dp/TEMP) * C_M + k3=1.4E-21_dp * EXP(2200._dp/TEMP) + RK_2HO2_H2O=(k1+k2)*k3 + END FUNCTION RK_2HO2_H2O +!__________________________________________________ + REAL(KIND=dp) FUNCTION RK_CO_HO( TEMP, C_M ) + REAL(KIND=dp), INTENT(IN) :: TEMP, C_M + RK_CO_HO =1.5e-13 * (1.0 + 8.18e-23 * TEMP * C_M) + END FUNCTION RK_CO_HO +!__________________________________________________ + REAL(KIND=dp) FUNCTION peroxy(K,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10, & + TEMP,C_M) + REAL(KIND=dp), INTENT(IN) :: X1,X2,X3,X4,X5,X6,X7,X8,X9,X10 + REAL(KIND=dp), INTENT(IN) :: TEMP,C_M + INTEGER :: nperox, I, J, K + PARAMETER(nperox=10) + REAL(KIND=dp) :: Aperox(nperox,nperox),Bperox(nperox,nperox) + REAL(KIND=dp) :: RK_PEROX(nperox,nperox) + REAL(KIND=dp) :: RK_PARAM(nperox),SPEROX(nperox) +! + SPEROX(1)=X1 + SPEROX(2)=X2 + SPEROX(3)=X3 + SPEROX(4)=X4 + SPEROX(5)=X5 + SPEROX(6)=X6 + SPEROX(7)=X7 + SPEROX(8)=X8 + SPEROX(9)=X9 + SPEROX(10)=X10 +! + Aperox(1,1)=2.5e-13 + Aperox(2,2)=6.8e-14 + Aperox(3,3)=2.9e-12 + Aperox(4,4)=8.0e-12 + Aperox(5,5)=1.0e-12 + Aperox(6,6)=5.3e-16 + Aperox(7,7)=3.1e-14 + Aperox(8,8)=3.1e-14 + Aperox(9,9)=3.1e-14 + Aperox(10,10)=3.1e-14 + Bperox(1,1)=190. + Bperox(2,2)=0.0 + Bperox(3,3)=500. + Bperox(4,4)=0.0 + Bperox(5,5)=0.0 + Bperox(6,6)=1980. + Bperox(7,7)=1000. + Bperox(8,8)=1000. + Bperox(9,9)=1000. + Bperox(10,10)=1000. + DO I=1,nperox + DO J=1,nperox + IF(I.NE.J) THEN + Aperox(I,J)=2.0*SQRT(Aperox(I,I)*Aperox(J,J)) + Bperox(I,J)=0.5*(Bperox(I,I)+Bperox(J,J)) + ENDIF + ENDDO + ENDDO + Aperox(3,1)=1.3e-12 + Aperox(1,3)=1.3e-12 + Bperox(3,1)=640.0 + Bperox(1,3)=640.0 +! + DO I=1,nperox + RK_PARAM(I)=0.0 + ENDDO + DO I=1,nperox + DO J=1,nperox + RK_PEROX(I,J)=ARR3(Aperox(I,J),-Bperox(I,J),TEMP) + RK_PARAM(I)=RK_PARAM(I)+RK_PEROX(I,J)*SPEROX(J) + ENDDO + ENDDO + peroxy=RK_PARAM(K) +! + END FUNCTION peroxy +!__________________________________________________ +#ENDINLINE diff --git a/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.eqn b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.eqn new file mode 100755 index 0000000000..28d741ac43 --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.eqn @@ -0,0 +1,209 @@ +#EQUATIONS {CBMZ_MOSAIC} + {001:J01} NO2 + hv = NO + O3P : j(Pj_no2) ; + {002:J02} NO3 + hv = .89 NO2 + .89 O3P + .11 NO : j(Pj_no3o) ; + {003:J03} HONO + hv = OH + NO : j(Pj_hno2) ; + {004:J04} HNO3 + hv = OH + NO2 : j(Pj_hno3) ; + {005:J05} HNO4 + hv = HO2 + NO2 : j(Pj_hno4) ; + {006:J06} N2O5 + hv = NO2 + NO3 : j(Pj_n2o5) ; + {007:J07} O3 + hv = O3P : j(Pj_o33p) ; + {008:J08} O3 + hv = O1D : j(Pj_o31d) ; + {009:J09} H2O2 + hv = 2 OH : j(Pj_h2o2) ; + {010:J10} HCHO + hv = 2 HO2 + CO : j(Pj_ch2or) ; + {011:J11} HCHO + hv = CO : j(Pj_ch2om) ; + {012:J12} CH3OOH + hv = HCHO + HO2 + OH : 0.7 * j(Pj_h2o2) ; + {013:J13} ETHOOH + hv = ALD2 + HO2 + OH : 0.7 * j(Pj_h2o2) ; + {014:J14} ALD2 + hv = CH3O2 + HO2 + CO : 4.6D-4 * j(Pj_no2); + {015:J15} AONE + hv = C2O3 + CH3O2 : 7.8D-5 * j(Pj_no2) ; + {016:J16} MGLY + hv = C2O3 + CO + HO2 : 9.64 * j(Pj_ch2or); + {017:J17} OPEN + hv = C2O3 + CO + HO2 : 9.04 * j(Pj_ch2or) ; + {018:J18} ROOH + hv = OH + 0.4 XO2 + 0.74 AONE + + 0.3 ALD2 + 0.1 ETHP + 0.9 HO2 + 1.98 XPAR : 0.7 * j(Pj_h2o2) ; + {019:J19} ONIT + hv = NO2 + 0.41 XO2 + 0.74 AONE + + 0.3 ALD2 + 0.1 ETHP + 0.9 HO2+ 1.98 XPAR : 1.0D-4 * j(Pj_no2) ; + {020:J20} ISOPRD + hv = 0.97 C2O3 + 0.33 HO2 + + 0.33 CO + 0.7 CH3O2 + 0.2 HCHO + + 0.07 ALD2 + 0.03 AONE : 0.025 * j(Pj_ch2om) ; + {021:001} O1D+M=O3P : .79* ARR3(1.8D-11, -110.0_dp, TEMP) + .21* ARR3(3.2D-11, -70.0_dp, TEMP); + {022:002} O1D+H2O = 2 OH : 2.2D-10 ; + {023:003} O3P+M{+O2} = O3 : .21*ARR3MS(6.0D-34,2.3_dp,TEMP,C_M) ; + {024:004} O3P + O3 =0.42M {2O2} : ARR3(8.0D-12, 2060._dp, TEMP) ; + {025:005} O3P + NO2 = NO : ARR3(6.5D-12, 120._dp, TEMP) ; + {026:006} O3P + NO2 = NO3 : TROEMS(9.0D-32, -2.0_dp, 2.2D-11, 0.0_dp, TEMP, C_M) ; + {027:007} O3P + NO = NO2 : TROEMS(9.0D-32, -1.5_dp, 3.0D-11, 0.0_dp, TEMP, C_M) ; + {028:008} O3 + NO = NO2 : ARR3(2.0D-12, 1400._dp, TEMP) ; + {029:009} O3 + NO2 = NO3 : ARR3(1.2D-13, 2450._dp, TEMP) ; + {030:010} O3 + OH = HO2 : ARR3(1.6D-12, 940._dp, TEMP) ; + {031:011} O3 + HO2 = OH : ARR3(1.1D-14, 500._dp, TEMP) ; + {032:012} OH+M = HO2+H2O : 5.8D-7*ARR3(5.5D-12, 2000._dp, TEMP) ; + {033:013} OH + NO = HONO : TROEMS(7.0D-31 ,-2.6_dp, 3.6D-11, -0.1_dp, TEMP, C_M) ; + {034:014} OH + NO2 = HNO3 : TROEMS(2.5D-30 ,-4.4_dp, 1.6D-11, -1.7_dp, TEMP, C_M) ; + {035:015} OH + NO3 = HO2 + NO2 : 2.2D-11 ; + {036:016} OH + HONO = NO2 : ARR3(1.8D-11, 390._dp, TEMP) ; + {037:017} OH + HNO3 = NO3 : RK_HO_HNO3(TEMP, C_M) ; + {038:018} OH + HNO4 = NO2 : ARR3(1.3D-12, -380._dp, TEMP); + {039:019} OH + HO2 = H2O +0.21M : ARR3(4.8D-11, -250._dp, TEMP) ; + {040:020} OH + H2O2 = HO2 : ARR3(2.9D-12, 160._dp, TEMP) ; + {041:021} HO2 + HO2 = H2O2 : RK_2HO2(TEMP, C_M) ; + {042:022} HO2 + HO2 + H2O = H2O2 : RK_2HO2_H2O(TEMP, C_M) ; + {043:023} HO2 + NO = OH + NO2 : ARR3(3.5D-12, -250._dp, TEMP) ; + {044:024} HO2 + NO2 = HNO4 : TROEMS(1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; + {045:025} HO2 + NO2 = HONO : 5.0D-16 ; + {046:026} HNO4 = HO2 + NO2 : TROEEMS(4.8D+26, 10900._dp, 1.8D-31, -3.2_dp, 4.7D-12, -1.4_dp, TEMP, C_M) ; + {047:027} NO3 + NO = NO2 + NO2 : ARR3(1.5D-11, -170._dp, TEMP) ; + {048:028} NO3 + NO2 = NO + NO2 : ARR3(4.5D-14, 1260._dp, TEMP) ; + {049:029} NO3 + NO2 = N2O5 : TROEMS(2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; + {050:030} NO3 + NO3 = 2.0 NO2 : ARR3(8.5D-13, 2450._dp, TEMP) ; + {051:031} NO3 + HO2 = 0.3 HNO3 + .7 NO2 + .7 OH : 3.5D-12 ; + {052:032} N2O5+H2O = 2.0 HNO3 : 2.0D-21 ; + {053:033} N2O5 = NO3 + NO2 : TROEEMS(3.7D+26, 11000._dp, 2.2D-30, -3.9_dp, 1.5D-12, -0.7_dp, TEMP, C_M) ; + {054:034} CO + OH = HO2 : RK_CO_HO(TEMP, C_M) ; + {055:035} SO2 + OH = H2SO4 + HO2 : TROEMS(3.0D-31, -3.3_dp, 1.5D-12, 0.0_dp, TEMP, C_M) ; + {056:036} OH+CH4 = CH3O2 : TEMP**0.667 * ARR3(2.8D-14, 1575._dp, TEMP) ; + {057:037} C2H6 + OH = ETHP : TEMP**2 * ARR3(1.5D-17, 492._dp, TEMP) ; + {058:038} PAR + OH = RO2 + .012 ALK1 : 8.1D-13 ; + {059:039} HCHO + OH = HO2 + CO : 1.0D-11 ; + {060:040} HCHO + NO3 = HNO3 + HO2 + CO : ARR3(3.4D-13, 1900._dp, TEMP) ; + {061:041} ALD2 + OH = C2O3 : ARR3(5.6D-12, -270._dp, TEMP) ; + {062:042} ALD2 + NO3 = C2O3 + HNO3 : ARR3(1.4D-12, 1900._dp, TEMP) ; + {063:043} AONE + OH = ANO2 : TEMP**2 * ARR3(5.3D-18, 230._dp, TEMP) ; + {064:044} MGLY + OH = XO2 + C2O3 : 1.7D-11 ; + {065:045} MGLY + NO3 = HNO3 + C2O3 + CO : ARR3(1.4D-12, 1900._dp, TEMP) ; + {066:046} ETH + O3 = HCHO + .22 HO2 + .12 OH + + .24 CO {+ .24CO2} + .52 HCOOH : ARR3(1.2D-14, 2630._dp, TEMP) ; + {067:047} ETH + OH = XO2 + 1.56 HCHO + HO2 + .22 ALD2 : TROEMS(1.0D-28, -0.8_dp, 8.8D-12, 0.0_dp, TEMP, C_M) ; + {068:048} OLET + O3 = .57 HCHO + .47 ALD2 + + .33 OH + .26 HO2 {+ .08H2}+ + .07 CH3O2 + .06 ETHP + + .03 RO2 + .13 C2O3 + + .04 MGLY + .03 CH3OH + + .06CH4 + .01C2H6 + + .31 CO {+ .22 CO2} + + .22 HCOOH + .09RCOOH +1.06 XPAR + .008 OLE1 : ARR3(4.2D-15, 1800._dp, TEMP) ; + {069:049} OLEI + O3 = 1.03 ALD2 +.07 AONE + + .6 OH + .22 HO2 + + .1 CH3O2 + .05 ETHP + + .09 RO2 + .11 ANO2 + + .19 C2O3 + .07 MGLY + + .04 CH3OH + .08 CH4 + .01C2H6 + .3 CO {+ + .18CO2} + .16 RCOOH + 2.26 XPAR + .008 OLE1 : ARR3(8.9D-16, 392._dp, TEMP) ; + {070:050} OLET + OH = XO2 + HO2 + HCHO + ALD2 + XPAR + + .008 OLE1 : ARR3(5.8D-12, -478._dp, TEMP) ; + {071:051} OLEI + OH = XO2 + HO2 + .23 AONE + + 1.77 ALD2 + 2.23 XPAR + .008 OLE1 : ARR3(2.9D-11, -255._dp, TEMP) ; + {072:052} OLET + NO3 = NAP + .008 OLE1 : ARR3(3.1D-13, 1010._dp, TEMP) ; + {073:053} OLEI + NO3 = NAP + .008 OLE1 : 2.5D-12; + {074:054} TOL + OH = .08 XO2 + .12 CRES + + .2 HO2 + .8 TO2 + .039 ARO1 +.108 ARO2 : ARR3(2.1D-12, -322._dp, TEMP) ; + {075:055} XYL + OH = .5 XO2 + .55 HO2 + + .05 CRES + .8 MGLY + + 1.1 PAR + .45 TO2 + .039 ARO1 +.108 ARO2 : ARR3(1.7D-11, -116._dp, TEMP) ; + {076:056} TO2 + NO = .95 NO2 + .95 OPEN + + .95 HO2 + .05 ONIT : 8.1D-12 ; + {077:057} CRES + OH = .4 CRO + .6 XO2 + + .6 HO2 + .3 OPEN + .039 ARO1 +.108 ARO2 : 4.1D-11 ; + {078:058} CRES + NO3 = CRO + HNO3 + + .039 ARO1 +.108 ARO2 : 2.2D-11 ; + {079:059} CRO + NO2 = ONIT : 1.4D-11; + {080:060} OPEN + OH = XO2 + C2O3 + 2 CO + + 2 HO2 + HCHO : 3.0D-11 ; + {081:061} OPEN + O3 = .03 ALD2 + .62 C2O3 + + .7 HCHO + .69 CO + + .08 OH + .03 XO2 + + .76 HO2 + .2 MGLY : ARR3(5.4D-17, 500._dp, TEMP); + {082:062} ISOP + OH = ISOPP + .08 XO2 : ARR3(2.6D-11, -409._dp, TEMP); + {083:063} ISOP + O3 = .6 HCHO + .65 ISOPRD + + .27 OH + .07 CO + .39 RCOOH + + .07 HO2 + .15 ALD2 + + .2 XO2 + .2 C2O3 : ARR3(1.2D-14, 2013._dp, TEMP) ; + {084:064} ISOP + NO3 = ISOPN : ARR3(3.0D-12, 446._dp, TEMP) ; + {085:065} ISOPRD + OH = .5 C2O3 + .5 ISOPO2 + .2 XO2 : 3.3D-11 ; + {086:066} ISOPRD + O3 = .27 OH + .1 HO2 + + .11 C2O3 + .07 XO2 + + .05 CH3O2 + .16 CO + + .15 HCHO + .02 ALD2 + + .09 AONE + .85 MGLY + + .46 RCOOH : 7.0D-18 ; + {087:067} ISOPRD + NO3 = .07 C2O3 + .07 HNO3 + + .64 CO + .28 HCHO + + .93 ONIT + .28 ALD2 + + .93 HO2 + .93 XO2 + + 1.86 PAR : 1.0D-15 ; + {088:068} ISOPP + NO = .09 ONIT + .91 NO2 + + .91 HO2 + .63 HCHO + + .91 ISOPRD + 0.18 PAR : 4.0D-12 ; + {089:069} ISOPN + NO = 1.2 NO2 + .8 ONIT + + .8 ALD2 + .8 HO2 + + .2 ISOPRD + 1.6 PAR : 4.0D-12 ; + {090:070} ISOPO2 + NO = NO2 + HO2 + .59 CO + + .55 ALD2 + .25 HCHO + + .34 MGLY + .63 AONE : 4.0D-12; + {091:071} ISOPP + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {092:072} ISOPN + HO2 = ONIT + 2 PAR : ARR3(1.7D-13, -1300._dp, TEMP) ; + {093:073} ISOPO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {094:074} CH3OOH + OH = .7 CH3O2 + .3 HCHO + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; + {095:075} ETHOOH + OH = .7 ETHP + .3 ALD2 + .3 OH : ARR3(3.8D-12, -200._dp, TEMP) ; + {096:076} ROOH + OH = .77 RO2 + .19 MGLY + + .04 ALD2 + .23 OH + .42 XPAR : ARR3(3.8D-12, -200._dp, TEMP) ; + {097:077} ONIT + OH = NAP : ARR3(1.6D-11, 540._dp, TEMP) ; + {098:078} C2O3 + NO2 = PAN : TROEMS(9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; + {099:079} PAN = C2O3 + NO2 : TROEEMS(1.1D+28, 14000._dp, 9.7D-29, -5.6_dp, 9.3D-12, -1.5_dp, TEMP, C_M) ; + {100:080} CH3OH + OH = HCHO + HO2 : ARR3(6.7D-12, 600._dp, TEMP) ; + {101:081} CH3O2 + NO = HCHO + HO2 + NO2 : ARR3(3.0D-12, -280._dp, TEMP) ; + {102:082} ETHP + NO = ALD2 + HO2 + NO2 : ARR3(2.6D-12, -365._dp, TEMP) ; + {103:083} RO2 + NO = .16 ONIT + .84 NO2 + + .34 XO2 + .62 AONE + + .25 ALD2 + .08 ETHP + + .76 HO2 + 1.68 XPAR : 4.0D-12 ; + {104:084} C2O3 + NO = NO2 + CH3O2 {+CO2} : ARR3(5.3D-12, -360._dp, TEMP) ; + {105:085} ANO2 + NO = NO2 + C2O3 + HCHO : 4.0D-12 ; + {106:086} NAP + NO = 1.5 NO2 + .5 HCHO + + .5 ALD2 + .5 ONIT + + .5 HO2 + XPAR : 4.0D-12 ; + {107:087} XO2 + NO = NO2 : 4.0D-12 ; + + {108:088} CH3O2 + NO3 = HCHO + HO2 + NO2 : 1.1D-12 ; + {109:089} ETHP + NO3 = ALD2 + HO2 + NO2 : 2.5D-12 ; + {110:090} RO2 + NO3 = NO2 + .4 XO2 + + .74 AONE + .3 ALD2 + + .1 ETHP + .9 HO2 + 1.98 XPAR : 2.5D-12 ; + {111:091} C2O3 + NO3 = NO2 + CH3O2 : 4.0D-12 ; + {112:092} ANO2 + NO3 = NO2 + C2O3 + HCHO : 1.2D-12; + {113:093} NAP + NO3 = 1.5 NO2 + .5 HCHO + + .5 ALD2 + .5 ONIT + + .5 HO2 + XPAR : 4.0D-12 ; + {114:094} XO2 + NO3 = NO2 : 2.5D-12 ; + {115:095} CH3O2 + HO2 = CH3OOH : ARR3(3.8D-13, -800._dp, TEMP) ; + {116:096} ETHP + HO2 = ETHOOH : ARR3(7.5D-13, -700._dp, TEMP) ; + {117:097} RO2 + HO2 = ROOH : ARR3(1.7D-13, -1300._dp, TEMP) ; + {118:098} C2O3 + HO2 = .4 RCOOH + .4 O3 : ARR3(4.5D-13, -1000._dp, TEMP) ; + {119:099} ANO2 + HO2 = ROOH : ARR3(1.2D-13, -1300._dp, TEMP) ; + {120:100} NAP + HO2 = ONIT : ARR3(1.7D-13, -1300._dp, TEMP) ; + {121:101} XO2 + HO2 = PROD : ARR3(1.7D-13, -1300._dp, TEMP) ; + + {122:102} ANOL + OH = ALD2 + HO2 : ARR3(7.0D-12, 235._dp, TEMP) ; + {123:103} PAR + XPAR = PROD : 1.0D-11 ; + {124:104} HCl = HCl : 1.0 ; + {125:105} NH3 = NH3 : 1.0 ; + {126:106} H2SO4 = H2SO4 : 1.0 ; + {127:107} CH3O2 = .66 HCHO + .32 HO2 + .34 CH3OH : peroxy(1,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {128:108} ETHP = .8 ALD2 + .6 HO2 + .2 C2H6 : peroxy(2,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {129:109} RO2 = .24 XO2 + .21 ALD2 + + .57 AONE + .06 ETHP + + .54 HO2 + 1.25 XPAR : peroxy(3,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + + {130:110} C2O3 = CH3O2 : peroxy(4,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {131:111} ANO2 = .7 C2O3 + .7 HCHO + + .15 MGLY + .15 AONE : peroxy(5,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {132:112} NAP = .5 NO2 + .5 HCHO + .5 ALD2 + .5 ONIT + + XPAR : peroxy(6,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {133:113} ISOPP = ISOPRD : peroxy(7,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {134:114} ISOPN = ALD2 + ONIT + 2 PAR : peroxy(8,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {135:115} ISOPO2 = .5 ALD2 + .5 AONE : peroxy(9,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + + {136:116} XO2 = PROD : peroxy(10,CH3O2,ETHP,RO2,C2O3,ANO2,NAP,ISOPP,ISOPN,ISOPO2,XO2,TEMP,C_M) ; + {137:117} API + OH = .0064 API1 + .055 API2 : ARR3(12.1D-12, -444._dp,TEMP) ; + {138:118} API + NO3 = .0 API1 + .0 API2 : ARR3(1.01D-15, 732._dp,TEMP) ; + {139:119} API + O3 = .022 API1 + .19 API2 : ARR3(1.19D-12, -490._dp,TEMP) ; + {140:120} LIM + OH = .037 LIM1 + .056 LIM2 : 1.71D-10 ; + {141:121} LIM + NO3 = .0 LIM1 + .0 LIM2 : 2.0D-16 ; + {142:122} LIM + O3 = .13 LIM1 + .19 LIM2 : 1.22D-11 ; diff --git a/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.kpp b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.kpp new file mode 100755 index 0000000000..6acd569e60 --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.kpp @@ -0,0 +1,11 @@ +#MODEL cbmz_mosaic +#LANGUAGE Fortran90 +#DOUBLE ON +#INTEGRATOR WRF_conform/rosenbrock +#DRIVER general +#JACOBIAN SPARSE_LU_ROW +#HESSIAN OFF +#STOICMAT OFF +#WRFCONFORM + + diff --git a/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.spc b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.spc new file mode 100755 index 0000000000..3836706a86 --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic.spc @@ -0,0 +1,75 @@ +#DEFVAR + H2SO4 = S ; {sulfuric acid} + HNO3 = N ; {nitric acid} + HCl = IGNORE ; {hydrochloric acid} + NH3 = IGNORE ; {ammonia} + NO = N ; {nitric oxide} + NO2 = N ; {nitrogen dioxide} + NO3 = N ; {nitrate radical} + N2O5 = 2 N ; {nitrogen pentoxide} + HONO = N ; {nitrous acid} + HNO4 = N ; {pernitric acid} + O3 = IGNORE ; {ozone} + O1D = IGNORE ; {oxygen atom singlet D} + O3P = IGNORE ; {oxygen atom triplet P} + OH = IGNORE ; {hydroxyl radical} + HO2 = IGNORE ; {hydroperoxyl radical} + H2O2 = IGNORE ; {hydrogen peroxide} + CH4 =IGNORE ; + CO = IGNORE ; {carbon monoxide} + SO2 = S ; {sulfur dioxide} + C2H6 = IGNORE ; {ethane} + CH3O2 = IGNORE ; {methylperoxy radical} + ETHP = IGNORE ; {ethylperoxy radical} + HCHO = IGNORE ; {formaldehyde} + CH3OH = IGNORE ; {methanol} + ANOL = IGNORE ; {ethanol -CH2-CH2OH} + CH3OOH = IGNORE ; {methyl hydrogen peroxide} + ETHOOH = IGNORE ; {ethyl hydrogen peroxide} + ALD2 = IGNORE ; {acetaldehyde} + HCOOH = IGNORE ; {formic acid} + RCOOH = IGNORE ; {higher organic acids} + C2O3 = IGNORE ; {peroxyacyl radical} + PAN = N ; {peroxyacyl nitrate} + PAR = IGNORE ; {paraffin carbon -C-} + AONE = IGNORE ; {acetone} + MGLY = IGNORE ; {methylglyoxal} + ETH = IGNORE ; {ethene} + OLET = IGNORE ; {terminal OLEfin carbons C=C} + OLEI = IGNORE ; {internal OLEfin carbons C=C} + TOL = IGNORE ; {toluene} + XYL = IGNORE ; {xylene} + CRES = IGNORE ; {cresol and higher M.W. phenols} + TO2 = IGNORE ; {toluene-OH adduct} + CRO = IGNORE ; {methylphenoxy radical} + OPEN = IGNORE ; {high M.W. AROmatic ox. frag} + ONIT = N ; {organic nitrate} + ROOH = IGNORE ; {higher organic peroxide} + RO2 = IGNORE ; {ALKylperoxy radical} + ANO2 = IGNORE ; {acetylmethylperoxy radical} + NAP = N ; {nitratoALKyl peroxy radicals} + XO2 = IGNORE ; {NO to NO2 operator} + XPAR = IGNORE ; {PAR removal operator} + ISOP = IGNORE ; {isoprene} + ISOPRD = IGNORE ; {lumped intermediate species} + ISOPP = IGNORE ; {lumped peroxyradical of isoprene} + ISOPN = N ; {no3-isoprene adduct} + ISOPO2 = IGNORE ; {lumped peroxyradical of isoprene} + ARO1 = IGNORE ; {SORGAM species} + ARO2 = IGNORE ; {SORGAM species} + ALK1 = IGNORE ; {SORGAM species} + OLE1 = IGNORE ; {SORGAM species} + API1 = IGNORE ; {SORGAM species} + API2 = IGNORE ; {SORGAM species} + LIM1 = IGNORE ; {SORGAM species} + LIM2 = IGNORE ; {SORGAM species} + API = IGNORE ; {alpha-pinene} + LIM = IGNORE ; {LIMonene} + +#DEFFIX + H2O = IGNORE ; {water vapor} + M = IGNORE ; +{ H2 = IGNORE ;} +{ O2 = IGNORE ; } +{ N2 = IGNORE ; } +{ CH4 = IGNORE ;} diff --git a/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic_wrfkpp.equiv b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic_wrfkpp.equiv new file mode 100755 index 0000000000..5ea8ca3039 --- /dev/null +++ b/chem/KPP/mechanisms/cbmz_mosaic/cbmz_mosaic_wrfkpp.equiv @@ -0,0 +1,25 @@ +! use this file for species that have different +! names in WRF and KPP +! +! currently case sensitive ! +! +! left column right column +! name in WRF name in KPP +HO OH +SULF H2SO4 +ETH C2H6 +ALD ALD2 +KET AONE +OL2 ETH +OLT OLET +OLI OLEI +CSL CRES +ISO ISOP +OP1 CH3OOH +OP2 ETHOOH +ORA1 HCOOH +ORA2 RCOOH +C2H5OH ANOL +OP3 ROOH + + diff --git a/chem/KPP/mechanisms/saprc99/atoms_red b/chem/KPP/mechanisms/saprc99/atoms_red new file mode 100755 index 0000000000..2578ad27ca --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/atoms_red @@ -0,0 +1,107 @@ +#ATOMS + H { 1 Hydrogen }; + He { 2 Helium }; + Li { 3 Litium }; + Be { 4 }; + B { 5 }; + C { 6 }; + N { 7 }; + O { 8 }; + F { 9 }; + Ne { 10 }; + Na { 11 }; + Mg { 12 }; + Al { 13 }; + Si { 14 }; + P { 15 }; + S { 16 }; + Cl { 17 }; + Ar { 18 }; + K { 19 }; + Ca { 20 }; + Sc { 21 }; + Ti { 22 }; + V { 23 }; + Cr { 24 }; + Mn { 25 }; + Fe { 26 }; + Co { 27 }; + Ni { 28 }; + Cu { 29 }; + Zn { 30 }; + Ga { 31 }; + Ge { 32 }; + As { 33 }; + Se { 34 }; + Br { 35 }; + Kr { 36 }; + Rb { 37 }; + Sr { 38 }; + Y { 39 }; + Zr { 40 }; + Nb { 41 }; + Mu { 42 }; + Tc { 43 }; + Ru { 44 }; + Rh { 45 }; + Pd { 46 }; + Ag { 47 }; + Cd { 48 }; + In { 49 }; + Sn { 50 }; + Sb { 51 }; + Te { 52 }; + I { 53 }; + Xe { 54 }; + Cs { 55 }; + Ba { 56 }; + La { 57 }; + Ce { 58 }; + Pr { 59 }; + Nd { 60 }; + Pm { 61 }; + Sm { 62 }; + Eu { 63 }; + Gd { 64 }; + Tb { 65 }; + Dy { 66 }; + Ho { 67 }; + Er { 68 }; + Tm { 69 }; + Yb { 70 }; + Lu { 71 }; + Hf { 72 }; + Ta { 73 }; + W { 74 }; + Re { 75 }; + Os { 76 }; + Ir { 77 }; + Pt { 78 }; + Au { 79 }; + Hg { 80 }; + Tl { 81 }; + Pb { 82 }; + Bi { 83 }; + Po { 84 }; + At { 85 }; + Rn { 86 }; + Fr { 87 }; + Ra { 88 }; + Ac { 89 }; + Th { 90 }; + Pa { 91 }; + U { 92 }; + Np { 93 }; + Pu { 94 }; + Am { 95 }; + Cm { 96 }; + Bk { 97 }; + Cf { 98 }; + Es { 99 }; + Fm {100 }; + Md {101 }; + No {102 }; + Lr {103 }; + Unq {104 }; + Unp {105 }; + Unh {106 }; diff --git a/chem/KPP/mechanisms/saprc99/saprc99.def b/chem/KPP/mechanisms/saprc99/saprc99.def new file mode 100755 index 0000000000..6f2f3917d4 --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/saprc99.def @@ -0,0 +1,3 @@ +#include atoms_red +#include saprc99.spc +#include saprc99.eqn diff --git a/chem/KPP/mechanisms/saprc99/saprc99.eqn b/chem/KPP/mechanisms/saprc99/saprc99.eqn new file mode 100755 index 0000000000..ceecbaf4ee --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/saprc99.eqn @@ -0,0 +1,374 @@ +#EQUATIONS {SAPRC99 by Pablo Saide, atomatically built using reorder_eqs.m script } + +{1} NO2 + hv = NO + O3P : j(Pj_no2) ; +{2} O3P + M {O2+air} = O3 : 0.20946e0*C_M*ARR(5.68D-34,0.0_dp,-2.80_dp,TEMP) ; +{3} O3P + O3 = M {2O2} : ARR(8.00D-12,2060.0_dp,0.0_dp,TEMP) ; +{4} O3P + NO + M {AIR} = NO2 : ARR(1.00D-31,0.0_dp,-1.60_dp,TEMP) ; +{5} O3P + NO2 = NO : ARR(6.50D-12,-120.0_dp,0.0_dp,TEMP) ; +{6} O3P + NO2 = NO3 : FALL(9.00D-32,0.0_dp,-2.00_dp,2.20D-11,0.0_dp,0.0_dp,0.80_dp,TEMP,C_M) ; +{7} O3 + NO = NO2 : ARR(1.80D-12,1370.0_dp,0.0_dp,TEMP) ; +{8} O3 + NO2 = NO3 : ARR(1.40D-13,2470.0_dp,0.0_dp,TEMP) ; +{9} NO + NO3 = NO2 + NO2 : ARR(1.80D-11,-110.0_dp,0.0_dp,TEMP) ; +{10} NO + NO + M {O2} = NO2 + NO2 : 0.20946e0*ARR(3.30D-39,-530.0_dp,0.0_dp,TEMP) ; +{11} NO2 + NO3 = N2O5 : FALL(2.80D-30,0.0_dp,-3.50_dp,2.00D-12,0.0_dp,0.20_dp,0.45_dp,TEMP,C_M) ; +{12} N2O5 = NO2 + NO3 : FALL(1.D-3,11000.0_dp,-3.5_dp,9.7D14,11080.0_dp,0.1_dp,0.45_dp,TEMP,C_M) ; +{13} N2O5 + H2O = HNO3 + HNO3 : 2.60D-22 ; +{14} NO2 + NO3 = NO + NO2 : ARR(4.50D-14,1260.0_dp,0.0_dp,TEMP) ; +{15} NO3 + hv = NO : j(Pj_no3o2) ; +{16} NO3 + hv = NO2 + O3P : j(Pj_no3o) ; +{17} O3 + hv = O3P : j(Pj_o33p) ; +{18} O3 + hv = O1D : j(Pj_o31d) ; +{19} O1D + H2O = OH + OH : 2.20D-10 ; +{20} O1D + M {AIR} = O3P : ARR(2.09D-11,-95.0_dp,0.0_dp,TEMP) ; +{21} OH + NO = HONO : FALL(7.00D-31,0.0_dp,-2.60_dp,3.60D-11,0.0_dp,-0.10_dp,0.60_dp,TEMP,C_M) ; +{22} HONO + hv = OH + NO : 0.9000_dp*j(Pj_hno2) ; +{23} HONO + hv = HO2 + NO2 : 0.1000_dp*j(Pj_hno2) ; +{24} OH + HONO = NO2 : ARR(2.70D-12,-260.0_dp,0.0_dp,TEMP) ; +{25} OH + NO2 = HNO3 : FALL(2.43D-30, 0.0_dp,-3.10_dp,1.67D-11,0.0_dp,-2.10_dp,0.60_dp,TEMP,C_M) ; +{26} OH + NO3 = HO2 + NO2 : 2.00D-11 ; +{27} OH + HNO3 = NO3 : EP2(7.20D-15,-785.0_dp,4.10D-16,-1440.0_dp,1.90D-33,-725.0_dp,TEMP,C_M) ; +{28} HNO3 + hv = OH + NO2 : j(Pj_hno3) ; +{29} OH + CO = HO2 : EP3(1.30D-13,0.0_dp,3.19D-33,0.0_dp,TEMP,C_M) ; +{30} OH + O3 = HO2 : ARR(1.90D-12,1000.0_dp,0.0_dp,TEMP) ; +{31} HO2 + NO = OH + NO2 : ARR(3.40D-12,-270.0_dp,0.0_dp,TEMP) ; +{32} HO2 + NO2 = HNO4 : FALL(1.80D-31,0.0_dp,-3.20_dp,4.70D-12,0.0_dp,0.0_dp,0.60_dp,TEMP,C_M) ; +{33} HNO4 = HO2 + NO2 : FALL(4.10D-05,10650.0_dp,0.0_dp,5.7D15,11170.0_dp,0.0_dp,0.5_dp,TEMP,C_M) ; +{34} HNO4 + hv = 0.61HO2 + 0.61NO2 + 0.39OH + + 0.39NO3 : j(Pj_hno4) ; +{35} HNO4 + OH = NO2 : ARR(1.50D-12,-360.0_dp,0.0_dp,TEMP) ; +{36} HO2 + O3 = OH : ARR(1.40D-14,600.0_dp,0.0_dp,TEMP) ; +{37} HO2 + HO2 = H2O2 : EP3(2.20D-13,-600.0_dp,1.85D-33,-980.0_dp,TEMP,C_M) ; +{38} HO2 + HO2 + H2O = H2O2 : EP3(3.08D-34,-2800.0_dp,2.59D-54,-3180.0_dp,TEMP,C_M) ; +{39} NO3 + HO2 = 0.8OH + 0.8NO2 + 0.2HNO3 : 4.00D-12 ; +{40} NO3 + NO3 = NO2 + NO2 : ARR(8.50D-13,2450.0_dp,0.0_dp,TEMP) ; +{41} H2O2 + hv = OH + OH : j(Pj_h2o2) ; +{42} H2O2 + OH = HO2 : ARR(2.90D-12,160.0_dp,0.0_dp,TEMP) ; +{43} OH + HO2 = H2O + M {O2} : ARR(4.80D-11,-250.0_dp,0.0_dp,TEMP) ; +{44} OH + SO2 = HO2 + H2SO4 : FALL(4.00D-31,0.0_dp,-3.30_dp,2.00D-12,0.0_dp,0.0_dp,0.45_dp,TEMP,C_M) ; +{45} OH + M {H2} = HO2 : 5.40D-7*ARR(7.70D-12,2100.0_dp,0.0_dp,TEMP) ; +{46} C_O2 + NO = NO2 + HCHO + HO2 : ARR(2.80D-12,-285.0_dp,0.0_dp,TEMP) ; +{47} C_O2 + HO2 = COOH : ARR(3.80D-13,-780.0_dp,0.0_dp,TEMP) ; +{48} C_O2 + NO3 = HCHO + HO2 + NO2 : 1.30D-12 ; +{49} C_O2 + C_O2 = MEOH + HCHO : ARR(2.45D-14,-710.0_dp,0.0_dp,TEMP) ; +{50} C_O2 + C_O2 = HCHO + HCHO + HO2 + HO2 : ARR(5.90D-13,509.0_dp,0.0_dp,TEMP) ; +{51} RO2_R + NO = NO2 + HO2 : ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{52} RO2_R + HO2 = ROOH : ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{53} RO2_R + NO3 = NO2 + HO2 : 2.30D-12 ; +{54} RO2_R + C_O2 = HO2 + 0.75HCHO + + 0.25MEOH : 2.00D-13 ; +{55} RO2_R + RO2_R = HO2 : 3.50D-14 ; +{56} R2O2 + NO = NO2 : 1.0_dp*ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{57} R2O2 + HO2 = HO2 : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{58} R2O2 + NO3 = NO2 : 1.0_dp*2.30D-12 ; +{59} R2O2 + C_O2 = C_O2 : 1.0_dp*2.00D-13 ; +{60} R2O2 + RO2_R = RO2_R : 1.0_dp*3.50D-14 ; +{61} R2O2 + R2O2 = R2O2 + R2O2 : 0.0_dp ; +{62} RO2_N + NO = RNO3 : 1.0_dp*ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{63} RO2_N + HO2 = ROOH : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{64} RO2_N + C_O2 = HO2 + 0.25MEOH + + 0.5MEK + 0.5PROD2 + 0.75HCHO : 1.0_dp*2.00D-13 ; +{65} RO2_N + NO3 = NO2 + HO2 + MEK : 1.0_dp*2.30D-12 ; +{66} RO2_N + RO2_R = HO2 + 0.5MEK + + 0.5PROD2 : 1.0_dp*3.50D-14 ; +{67} RO2_N + R2O2 = RO2_N : 1.0_dp*3.50D-14 ; +{68} RO2_N + RO2_N = MEK + HO2 + PROD2 : 1.0_dp*3.50D-14 ; +{69} CCO_O2 + NO2 = PAN : FALL(2.70D-28,0.0_dp,-7.10_dp,1.20D-11,0.0_dp,-0.90_dp,0.30_dp,TEMP,C_M) ; +{70} PAN = CCO_O2 + NO2 : FALL(4.90D-3,12100.0_dp,0.0_dp,4.0D16,13600.0_dp,0._dp,0.3_dp,TEMP,C_M) ; +{71} CCO_O2 + NO = C_O2 + NO2 : ARR(7.80D-12,-300.0_dp,0.0_dp,TEMP) ; +{72} CCO_O2 + HO2 = 0.75CCO_OOH + + 0.25CCO_OH + 0.25O3 : ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{73} CCO_O2 + NO3 = C_O2 + NO2 : 4.00D-12 ; +{74} CCO_O2 + C_O2 = CCO_OH + HCHO : ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{75} CCO_O2 + RO2_R = CCO_OH : 7.50D-12 ; +{76} CCO_O2 + R2O2 = CCO_O2 : 1.0_dp*7.50D-12 ; +{77} CCO_O2 + RO2_N = CCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{78} CCO_O2 + CCO_O2 = C_O2 + C_O2 : ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{79} RCO_O2 + NO2 = PAN2 : ARR(1.20D-11,0.0_dp,-0.90_dp,TEMP) ; +{80} PAN2 = RCO_O2 + NO2 : ARR(2.00D15,12800.0_dp,0.0_dp,TEMP) ; +{81} RCO_O2 + NO = NO2 + CCHO + RO2_R : ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{82} RCO_O2 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{83} RCO_O2 + NO3 = NO2 + CCHO + RO2_R : 1.0_dp*4.00D-12 ; +{84} RCO_O2 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{85} RCO_O2 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{86} RCO_O2 + R2O2 = RCO_O2 : 1.0_dp*7.50D-12 ; +{87} RCO_O2 + RO2_N = RCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{88} RCO_O2 + CCO_O2 = C_O2 + CCHO + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{89} RCO_O2 + RCO_O2 = CCHO + CCHO + RO2_R + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{90} BZCO_O2 + NO2 = PBZN : 1.37D-11 ; +{91} PBZN = BZCO_O2 + NO2 : ARR(7.90D16,14000.0_dp,0.0_dp,TEMP) ; +{92} BZCO_O2 + NO = NO2 + BZ_O + R2O2 : 1.0_dp*ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{93} BZCO_O2 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{94} BZCO_O2 + NO3 = NO2 + BZ_O + R2O2 : 1.0_dp*4.00D-12 ; +{95} BZCO_O2 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{96} BZCO_O2 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{97} BZCO_O2 + R2O2 = BZCO_O2 : 1.0_dp*7.50D-12 ; +{98} BZCO_O2 + RO2_N = RCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{99} BZCO_O2 + CCO_O2 = C_O2 + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{100} BZCO_O2 + RCO_O2 = CCHO + RO2_R + + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{101} BZCO_O2 + BZCO_O2 = BZ_O + BZ_O + R2O2 + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{102} MA_RCO3 + NO2 = MA_PAN : 1.0_dp*ARR(1.20D-11,0.0_dp,-0.90_dp,TEMP) ; +{103} MA_PAN = MA_RCO3 + NO2 : ARR(1.60D16,13486.0_dp,0.0_dp,TEMP) ; +{104} MA_RCO3 + NO = NO2 + HCHO + CCO_O2 : 1.0_dp*ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{105} MA_RCO3 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{106} MA_RCO3 + NO3 = NO2 + HCHO + CCO_O2 : 1.0_dp*4.00D-12 ; +{107} MA_RCO3 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{108} MA_RCO3 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{109} MA_RCO3 + R2O2 = MA_RCO3 : 1.0_dp*7.50D-12 ; +{110} MA_RCO3 + RO2_N = RCO_OH + RCO_OH : 1.0_dp*7.50D-12 ; +{111} MA_RCO3 + CCO_O2 = C_O2 + HCHO + + CCO_O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{112} MA_RCO3 + RCO_O2 = HCHO + CCO_O2 + + CCHO + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{113} MA_RCO3 + BZCO_O2 = HCHO + CCO_O2 + + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{114} MA_RCO3 + MA_RCO3 = HCHO + HCHO + CCO_O2 + CCO_O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{115} TBU_O + NO2 = RNO3 : 2.40D-11 ; +{116} TBU_O = ACET + C_O2 : ARR(7.50D14,8152.0_dp,0.0_dp,TEMP) ; +{117} BZ_O + NO2 = NPHE : ARR(2.30D-11,-150.0_dp,0.0_dp,TEMP) ; +{118} BZ_O + HO2 = PHEN : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{119} BZ_O = PHEN : 1.00D-03 ; +{120} BZNO2_O + NO2 = XN + XN + XC + XC + XC + XC + XC + XC : 1.0_dp*ARR(7.50D14,8152.0_dp,0.0_dp,TEMP) ; +{121} BZNO2_O + HO2 = NPHE : 1.0_dp*ARR(2.30D-11,-150.0_dp,0.0_dp,TEMP) ; +{122} BZNO2_O = NPHE : 1.0_dp*1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{123} HCHO + hv = HO2 + HO2 + CO : j(Pj_ch2or) ; +{124} HCHO + hv = CO : j(Pj_ch2om) ; +{125} HCHO + OH = HO2 + CO : ARR(8.60D-12,-20.0_dp,0.0_dp,TEMP) ; +{126} HCHO + HO2 = HOCOO : ARR(9.70D-15,-625.0_dp,0.0_dp,TEMP) ; +{127} HOCOO = HO2 + HCHO : ARR(2.40D12,7000.0_dp,0.0_dp,TEMP) ; +{128} HOCOO + NO = HCOOH + NO2 + HO2 : 1.0_dp*ARR(2.80D-12,-285.0_dp,0.0_dp,TEMP) ; +{129} HCHO + NO3 = HNO3 + HO2 + CO : ARR(2.00D-12,2431.0_dp,0.0_dp,TEMP) ; +{130} CCHO + OH = CCO_O2 : ARR(5.60D-12,-310.0_dp,0.0_dp,TEMP) ; +{131} CCHO +hv = CO + HO2 + C_O2 : 0.1900_dp*j(Pj_ch2or) ; +{132} CCHO + NO3 = HNO3 + CCO_O2 : ARR(1.40D-12,1860.0_dp,0.0_dp,TEMP) ; +{133} RCHO + OH = 0.034RO2_R + 0.001RO2_N + + 0.965RCO_O2 + 0.034CO+ 0.034CCHO : 2.00D-11 ; +{134} RCHO + hv = CCHO + RO2_R + CO + HO2 : 0.6500_dp*j(Pj_ch2or) ; +{135} RCHO + NO3 = HNO3 + RCO_O2 : ARR(1.40D-12,1771.0_dp,0.0_dp,TEMP) ; +{136} ACET + OH = HCHO + CCO_O2 + R2O2 : ARR(1.10D-12,520.0_dp,0.0_dp,TEMP) ; +{137} ACET + hv = CCO_O2 + C_O2 : 0.0230_dp*j(Pj_ch2or) ; +{138} MEK + OH = 0.37RO2_R + 0.042RO2_N + + 0.616R2O2+ 0.492CCO_O2 + + 0.096RCO_O2 + 0.115HCHO + + 0.482CCHO + 0.37RCHO : ARR(1.30D-12,25.0_dp,2.0_dp,TEMP) ; +{139} MEK + hv = CCO_O2 + CCHO + RO2_R : 0.0650_dp*j(Pj_ch2or) ; +{140} MEOH + OH = HCHO + HO2 : ARR(3.10D-12,360.0_dp,2.0_dp,TEMP) ; +{141} ETOH + OH = 0.95HO2 + 0.05RO2_R + + 0.081HCHO + 0.96CCHO : ARR(0.0_dp,0.0_dp,1.0_dp,TEMP) ; +{142} COOH + OH = 0.35HCHO + 0.35OH + + 0.65C_O2 : ARR(2.90D-12,-190.0_dp,0.0_dp,TEMP) ; +{143} COOH + hv = HCHO + HO2 + OH : j(Pj_ch3o2h) ; +{144} ROOH + OH = RCHO + 0.34RO2_R + + 0.66OH : 1.10D-11 ; +{145} ROOH + hv = RCHO + HO2 + OH : 0.2100_dp*j(Pj_ch2or) ; +{146} GLY + hv = CO + CO + HO2 + HO2 : j(Pj_hcochob) ; +{147} GLY + hv = HCHO + CO : 0.2000_dp*j(Pj_hcocho) ; +{148} GLY + OH = 0.63HO2 + 1.26CO+ + 0.37RCO_O2 : 1.10D-11 ; +{149} GLY + NO3 = HNO3 + 0.63HO2 + + 1.26CO+ 0.37RCO_O2 : ARR(2.80D-12,2376.0_dp,0.0_dp,TEMP) ; +{150} MGLY + hv = HO2 + CO + CCO_O2 : 1.3000_dp*j(Pj_ch3cocho) ; +{151} MGLY + OH = CO + CCO_O2 : 1.50D-11 ; +{152} MGLY + NO3 = HNO3 + CO + CCO_O2 : ARR(1.40D-12,1895.0_dp,0.0_dp,TEMP) ; +{153} BACL + hv = CCO_O2 + CCO_O2 : 2.3000_dp*j(Pj_ch3cocho) ; +{154} PHEN + OH = 0.24BZ_O + 0.76RO2_R + + 0.23GLY : 2.63D-11 ; +{155} PHEN + NO3 = HNO3 + BZ_O : 3.78D-12 ; +{156} CRES + OH = 0.24BZ_O + 0.76RO2_R + + 0.23MGLY : 4.20D-11 ; +{157} CRES + NO3 = HNO3 + BZ_O : 1.37D-11 ; +{158} NPHE + NO3 = HNO3 + BZNO2_O : 1.0_dp*2.63D-11 ; +{159} BALD + OH = BZCO_O2 : 1.29D-11 ; +{160} BALD + hv = XC + XC + XC + XC + XC + XC + XC : 1.7000_dp*j(Pj_ch2or) ; +{161} BALD + NO3 = HNO3 + BZCO_O2 : ARR(1.40D-12,1872.0_dp,0.0_dp,TEMP) ; +{162} METHACRO + OH = 0.5RO2_R + 0.416CO+ + 0.084HCHO + 0.416MEK + + 0.084MGLY + 0.5MA_RCO3 : ARR(1.86D-11,-176.0_dp,0.0_dp,TEMP) ; +{163} METHACRO + O3 = 0.008HO2 + 0.1RO2_R + + 0.208OH + 0.1RCO_O2 + 0.45CO+ + 0.2HCHO + 0.9MGLY + 0.333HCOOH : ARR(1.36D-15,2114.0_dp,0.0_dp,TEMP) ; +{164} METHACRO + NO3 = 0.5HNO3 + 0.5RO2_R + + 0.5CO+ 0.5MA_RCO3 : ARR(1.50D-12,1726.0_dp,0.0_dp,TEMP) ; +{165} METHACRO + O3P = RCHO : 6.34D-12 ; +{166} METHACRO + hv = 0.34HO2 + 0.33RO2_R + + 0.33OH + 0.67CCO_O2 + 0.67CO+ + 0.67HCHO + 0.33MA_RCO3 : 0.0470_dp*j(Pj_ch2om) ; +{167} MVK + OH = 0.3RO2_R + 0.025RO2_N + + 0.675R2O2+ 0.675CCO_O2 + + 0.3HCHO + 0.675RCHO + 0.3MGLY : ARR(4.14D-12,-453.0_dp,0.0_dp,TEMP) ; +{168} MVK + O3 = 0.064HO2 + 0.05RO2_R + + 0.164OH + 0.05RCO_O2 + 0.475CO+ + 0.1HCHO + 0.95MGLY + 0.351HCOOH : ARR(7.51D-16,1520.0_dp,0.0_dp,TEMP) ; +{169} MVK + O3P = 0.45RCHO + 0.55MEK : 4.32D-12 ; +{170} MVK + hv = 0.3C_O2 + 0.7CO+ 0.7PROD2 + + 0.3MA_RCO3 : 0.6300_dp*j(Pj_macr) ; +{171} ISOPROD + OH = 0.67RO2_R + + 0.041RO2_N + 0.289MA_RCO3 + + 0.336CO+ 0.055HCHO + 0.129CCHO + + 0.013RCHO + 0.15MEK + 0.332PROD2 + + 0.15GLY + 0.174MGLY : 6.19D-11 ; +{172} ISOPROD + O3 = 0.4HO2 + 0.048RO2_R + + 0.048RCO_O2 + 0.285OH + + 0.498CO+ 0.125HCHO + 0.047CCHO + + 0.21MEK + 0.023GLY + 0.742MGLY + + 0.1HCOOH + 0.372RCO_OH : 4.18D-18 ; +{173} ISOPROD + NO3 = 0.799RO2_R + + 0.051RO2_N + 0.15MA_RCO3 + 0.572CO+ + 0.15HNO3 + 0.227HCHO + 0.218RCHO + + 0.008MGLY + 0.572RNO3 : 1.00D-13 ; +{174} ISOPROD + hv = 1.233HO2 + 0.467CCO_O2 + + 0.3RCO_O2 + 1.233CO+ 0.3HCHO + + 0.467CCHO + 0.233MEK : 0.0038_dp*j(Pj_hcochest) ; +{175} PROD2 + OH = 0.379HO2 + 0.473RO2_R + + 0.07RO2_N + 0.029CCO_O2 + + 0.049RCO_O2 + 0.213HCHO + + 0.084CCHO + 0.558RCHO + + 0.115MEK + 0.329PROD2 : 1.50D-11 ; +{176} PROD2 + hv = 0.96RO2_R + 0.04RO2_N + + 0.515R2O2+ 0.667CCO_O2 + + 0.333RCO_O2 + 0.506HCHO + + 0.246CCHO + 0.71RCHO : 0.3000_dp*j(Pj_ch3coc2h5) ; +{177} RNO3 + OH = 0.338NO2 + 0.113HO2 + + 0.376RO2_R + 0.173RO2_N + + 0.596R2O2+ 0.01HCHO + + 0.439CCHO + 0.213RCHO + + 0.006ACET + 0.177MEK + + 0.048PROD2 + 0.31RNO3 : 7.80D-12 ; +{178} RNO3 + hv = NO2 + 0.341HO2 + 0.564RO2_R + + 0.095RO2_N + 0.152R2O2+ 0.134HCHO + + 0.431CCHO + 0.147RCHO + 0.02ACET + + 0.243MEK + 0.435PROD2 : 1.2000_dp*j(Pj_ch3ono2) ; +{179} DCB1 + OH = RCHO + RO2_R + CO : 5.00D-11 ; +{180} DCB1 + O3 = 1.5HO2 + 0.5OH + + 1.5CO + GLY : 2.00D-18 ; +{181} DCB2 + OH = R2O2 + RCHO + CCO_O2 : 5.00D-11 ; +{182} DCB2 + hv = RO2_R + 0.5CCO_O2 + 0.5HO2 + + CO + R2O2 + 0.5GLY + 0.5MGLY : 2.0000_dp*j(Pj_hcochest) ; +{183} DCB3 + OH = R2O2 + RCHO + CCO_O2 : 5.00D-11 ; +{184} DCB3 + hv = RO2_R + 0.5CCO_O2 + 0.5HO2 + + CO + R2O2 + 0.5GLY + 0.5MGLY : 6.8000_dp*j(Pj_hcochest) ; +{185} CH4 + OH = C_O2 : ARR(2.15D-12,1735.0_dp,0.0_dp,TEMP) ; +{186} ETHENE + OH = RO2_R + 1.61HCHO + + 0.195CCHO : ARR(1.96D-12,-438.0_dp,0.0_dp,TEMP) ; +{187} ETHENE + O3 = 0.12OH + 0.12HO2 + + 0.5CO+ HCHO + 0.37HCOOH : ARR(9.14D-15,2580.0_dp,0.0_dp,TEMP) ; +{188} ETHENE + NO3 = RO2_R + RCHO : ARR(4.39D-13,2282.0_dp,2.0_dp,TEMP) ; +{189} ETHENE + O3P = 0.5HO2 + 0.2RO2_R + + 0.3C_O2 + 0.491CO+ 0.191HCHO + + 0.25CCHO + 0.009GLY : ARR(1.04D-11,792.0_dp,0.0_dp,TEMP) ; +{190} ISOPRENE + OH = 0.907RO2_R + + 0.093RO2_N + 0.079R2O2+ + 0.624HCHO + 0.23METHACRO + + 0.32MVK + 0.357ISOPROD : ARR(2.50D-11,-408.0_dp,0.0_dp,TEMP) ; +{191} ISOPRENE + O3 = 0.266OH + + 0.066RO2_R + 0.008RO2_N + + 0.126R2O2+ 0.192MA_RCO3 + + 0.275CO+ 0.592HCHO + 0.1PROD2 + + 0.39METHACRO + 0.16MVK + + 0.204HCOOH + 0.15RCO_OH : ARR(7.86D-15,1912.0_dp,0.0_dp,TEMP) ; +{192} ISOPRENE + NO3 = 0.187NO2 + + 0.749RO2_R + 0.064RO2_N + + 0.187R2O2+ 0.936ISOPROD : ARR(3.03D-12,448.0_dp,0.0_dp,TEMP) ; +{193} ISOPRENE + O3P = 0.01RO2_N + + 0.24R2O2+ 0.25C_O2 + 0.24MA_RCO3 + + 0.24HCHO + 0.75PROD2 : 3.60D-11 ; +{194} TERP + OH = 0.75RO2_R + 0.25RO2_N + + 0.5R2O2+ 0.276HCHO + + 0.474RCHO + 0.276PROD2 : ARR(1.83D-11,-449.0_dp,0.0_dp,TEMP) ; +{195} TERP + O3 = 0.567OH + 0.033HO2 + + 0.031RO2_R + 0.18RO2_N + + 0.729R2O2+ 0.123CCO_O2 + + 0.201RCO_O2 + 0.157CO+ + 0.235HCHO + 0.205RCHO + 0.13ACET + + 0.276PROD2 + 0.001GLY + 0.031BACL + + 0.103HCOOH + 0.189RCO_OH : ARR(1.08D-15,821.0_dp,0.0_dp,TEMP) ; +{196} TERP + NO3 = 0.474NO2 + + 0.276RO2_R + 0.25RO2_N + + 0.75R2O2+ 0.474RCHO + 0.276RNO3 : ARR(3.66D-12,-175.0_dp,0.0_dp,TEMP) ; +{197} TERP + O3P = 0.147RCHO + 0.853PROD2 : 3.27D-11 ; +{198} C2H6 + OH = RO2_R + CCHO : ARR(1.37D-12,498.0_dp,2.0_dp,TEMP) ; +{199} C3H8 + OH = 0.965RO2_R + 0.035RO2_N + + 0.261RCHO + 0.704ACET : ARR(0.0_dp,0.0_dp,1.0_dp,TEMP) ; +{200} C2H2 + OH = 0.603OH + 0.297HO2 + + 0.1RO2_R + 0.393CO + 0.096HCHO + + 0.607GLY + 0.297HCOOH : ARR(9.87D-12,671.0_dp,0.0_dp,TEMP) ; +{201} ALK3 + OH = 0.695RO2_R + 0.07RO2_N + + 0.559R2O2+ 0.236TBU_O + 0.026HCHO + + 0.445CCHO + 0.122RCHO + 0.024ACET + + 0.332MEK : ARR(1.019D-11,434.0_dp,0.0_dp,TEMP) ; +{202} ALK4 + OH = 0.835RO2_R + 0.143RO2_N + + 0.936R2O2+ 0.011C_O2 + 0.011CCO_O2 + + 0.002CO+ 0.024HCHO + 0.455CCHO + + 0.244RCHO + 0.452ACET + 0.11MEK + + 0.125PROD2 : ARR(5.946D-12,91.0_dp,0.0_dp,TEMP) ; +{203} ALK5 + OH = 0.653RO2_R + 0.347RO2_N + + 0.948R2O2+ 0.026HCHO + 0.099CCHO + + 0.204RCHO + 0.072ACET + 0.089MEK + + 0.417PROD2 : ARR(1.112D-11,52.0_dp,0.0_dp,TEMP) ; +{204} ARO1 + OH = 0.224HO2 + 0.765RO2_R + + 0.011RO2_N + 0.055PROD2 + 0.118GLY + + 0.119MGLY + 0.017PHEN + 0.207CRES + + 0.059BALD + 0.491DCB1 + 0.108DCB2 + + 0.051DCB3 : ARR(1.81D-12,-355.0_dp,0.0_dp,TEMP) ; +{205} ARO2 + OH = 0.187HO2 + 0.804RO2_R + + 0.009RO2_N + 0.097GLY + 0.287MGLY + + 0.087BACL + 0.187CRES + 0.05BALD + + 0.561DCB1 + 0.099DCB2 + 0.093DCB3 : 2.640D-11 ; +{206} OLE1 + OH = 0.91RO2_R + 0.09RO2_N + + 0.205R2O2+ 0.732HCHO + 0.294CCHO + + 0.497RCHO + 0.005ACET + 0.119PROD2 : ARR(7.095D-12,-451.0_dp,0.0_dp,TEMP) ; +{207} OLE1 + O3 = 0.155OH + 0.056HO2 + + 0.022RO2_R + 0.001RO2_N + + 0.076C_O2 + 0.345CO+ 0.5HCHO + + 0.154CCHO + 0.363RCHO + 0.001ACET + + 0.215PROD2 + 0.185HCOOH + + 0.05CCO_OH + 0.119RCO_OH : ARR(2.617D-15,1640.0_dp,0.0_dp,TEMP) ; +{208} OLE1 + NO3 = 0.824RO2_R + 0.176RO2_N + + 0.488R2O2+ 0.009CCHO + 0.037RCHO + + 0.024ACET + 0.511RNO3 : ARR(4.453D-14,376.0_dp,0.0_dp,TEMP) ; +{209} OLE1 + O3P = 0.45RCHO + 0.437MEK + + 0.113PROD2 : ARR(1.074D-11,234.0_dp,0.0_dp,TEMP) ; +{210} OLE2 + OH = 0.918RO2_R + 0.082RO2_N + + 0.001R2O2+ 0.244HCHO + 0.732CCHO + + 0.511RCHO + 0.127ACET + 0.072MEK + + 0.061BALD + 0.025METHACRO + + 0.025ISOPROD : ARR(1.743D-11,-384.0_dp,0.0_dp,TEMP) ; +{211} OLE2 + O3 = 0.378OH + 0.003HO2 + + 0.033RO2_R + 0.002RO2_N + 0.137R2O2+ + 0.197C_O2 + 0.137CCO_O2 + + 0.006RCO_O2 + 0.265CO+ 0.269HCHO + + 0.456CCHO + 0.305RCHO + 0.045ACET + + 0.026MEK + 0.043PROD2 + 0.042BALD + + 0.026METHACRO + 0.019MVK + + 0.073HCOOH + 0.129CCO_OH + + 0.247RCO_OH : ARR(5.022D-16,461.0_dp,0.0_dp,TEMP) ; +{212} OLE2 + NO3 = 0.391NO2 + 0.442RO2_R + + 0.136RO2_N + 0.711R2O2+ 0.03C_O2 + + 0.079HCHO + 0.507CCHO + 0.151RCHO + + 0.102ACET + 0.001MEK + 0.015BALD + + 0.048MVK + 0.321RNO3 : 7.265D-13 ; +{213} OLE2 + O3P = 0.013HO2 + 0.012RO2_R + + 0.001RO2_N + 0.012CO+ 0.069RCHO + + 0.659MEK + 0.259PROD2 + + 0.012METHACRO : 2.085D-11 ; +{214} C2H2 + O3 = 0.5OH + 1.5HO2 + + 1.5CO + 0.5CO2 : 2.20D-10 ; +{215} C3H6 + OH = 0.984RO2_R + 0.016RO2_N + + 0.984HCHO + 0.984CCHO + 0.048XC : 2.20D-10 ; +{216} C3H6 + O3 = 0.32OH + 0.06HO2 + + 0.26C_O2 + 0.51CO + 0.135CO2 + 0.5HCHO + + 0.5CCHO + 0.185HCOOH + 0.17CCO_OH + 0.07XC : 2.20D-10 ; +{217} C3H6 + NO3 = 0.949RO2_R + 0.051RO2_N + + 2.693XC + 1.0XN : 2.20D-10 ; +{218} C3H6 + O3P = 0.45RCHO + 0.55MEK + + 0.55XC : 2.20D-10 ; +{219} SO2 = H2SO4 : 2.20D-10 ; +{220} HO2 = PROD : 7.0D-7 ; +{221} SO2 = PROD : 2.20D-10 ; +{222} H2SO4 = PROD : 2.20D-10 ; +{223} HNO3 = PROD : 2.20D-10 ; +{224} H2O2 = PROD : 2.20D-10 ; +{235} CO2 = PROD : 7.0D-7 ; diff --git a/chem/KPP/mechanisms/saprc99/saprc99.kpp b/chem/KPP/mechanisms/saprc99/saprc99.kpp new file mode 100644 index 0000000000..0cdbfa9b5d --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/saprc99.kpp @@ -0,0 +1,10 @@ +#MODEL saprc99 +#LANGUAGE Fortran90 +#DOUBLE ON +#INTEGRATOR WRF_conform/rosenbrock +#DRIVER general +#JACOBIAN SPARSE_LU_ROW +#HESSIAN OFF +#STOICMAT OFF +#WRFCONFORM + diff --git a/chem/KPP/mechanisms/saprc99/saprc99.spc b/chem/KPP/mechanisms/saprc99/saprc99.spc new file mode 100755 index 0000000000..bb8c532055 --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/saprc99.spc @@ -0,0 +1,83 @@ +#DEFVAR + O3 = 3O; + H2O2 = 2H + 2O; + NO = N + O; + NO2 = N + 2O; + NO3 = N + 3O; + N2O5 = 2N + 5O; + HONO = H + 2O + N; + HNO3 = H + N + 3O; + HNO4 = H + N + 4O; + SO2 = S + 2O; + H2SO4 = 2H + S + 4O; + CO = C + O; + HCHO = 2H + C + O; + CCHO = 2C + H + O; + RCHO = 3C + IGNORE; + ACET = IGNORE; + MEK = IGNORE; + HCOOH = 2H + C + 2O; + MEOH = IGNORE; + ETOH = IGNORE; + CCO_OH = IGNORE; + RCO_OH = IGNORE; + GLY = IGNORE; + MGLY = 3C + 4H + 2O; + BACL = IGNORE; + CRES = IGNORE; + BALD = IGNORE; + ISOPROD = IGNORE; + METHACRO = IGNORE; + MVK = IGNORE; + PROD2 = IGNORE; + DCB1 = IGNORE; + DCB2 = IGNORE; + DCB3 = IGNORE; + ETHENE = 2C + 4H; + ISOPRENE = IGNORE; + C2H6 = 2C + 6H; + C3H8 = 3C + 8H; + C2H2 = 2C + 2H; + C3H6 = 3C + 6H; + ALK3 = IGNORE; + ALK4 = IGNORE; + ALK5 = IGNORE; + ARO1 = IGNORE; + ARO2 = IGNORE; + OLE1 = IGNORE; + OLE2 = IGNORE; + TERP = IGNORE; + RNO3 = IGNORE; + NPHE = IGNORE; + PHEN = IGNORE; + PAN = 2C + 3H + 5O + N; + PAN2 = N + IGNORE; + PBZN = N + IGNORE; + MA_PAN = N + IGNORE; + CO2 = C + 2O; + CCO_OOH = 2C + 3O + H; + RCO_O2 = IGNORE; + RCO_OOH = IGNORE; + XN = IGNORE; + XC = IGNORE; + O3P = O; + O1D = O; + OH = H + O; + HO2 = H+ 2O; + C_O2 = IGNORE; + COOH = C + 2O + H; + ROOH = IGNORE; + RO2_R = IGNORE; + R2O2 = IGNORE; + RO2_N = IGNORE; + HOCOO = H + 3O + C; + CCO_O2 = IGNORE; + BZCO_O2 = IGNORE; + BZNO2_O = IGNORE; + BZ_O = IGNORE; + MA_RCO3 = IGNORE; + TBU_O = IGNORE; + CH4 = C + 4H; +#DEFFIX + H2O = 2H + O; + M = IGNORE; diff --git a/chem/KPP/mechanisms/saprc99/saprc99_wrfkpp.equiv b/chem/KPP/mechanisms/saprc99/saprc99_wrfkpp.equiv new file mode 100644 index 0000000000..d8932228df --- /dev/null +++ b/chem/KPP/mechanisms/saprc99/saprc99_wrfkpp.equiv @@ -0,0 +1,9 @@ +! use this file for species that have different +! names in WRF and KPP +! +! currently case sensitive ! +! +! left column right column +! name in WRF name in KPP +HO OH + diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/atoms_red b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/atoms_red new file mode 100755 index 0000000000..2578ad27ca --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/atoms_red @@ -0,0 +1,107 @@ +#ATOMS + H { 1 Hydrogen }; + He { 2 Helium }; + Li { 3 Litium }; + Be { 4 }; + B { 5 }; + C { 6 }; + N { 7 }; + O { 8 }; + F { 9 }; + Ne { 10 }; + Na { 11 }; + Mg { 12 }; + Al { 13 }; + Si { 14 }; + P { 15 }; + S { 16 }; + Cl { 17 }; + Ar { 18 }; + K { 19 }; + Ca { 20 }; + Sc { 21 }; + Ti { 22 }; + V { 23 }; + Cr { 24 }; + Mn { 25 }; + Fe { 26 }; + Co { 27 }; + Ni { 28 }; + Cu { 29 }; + Zn { 30 }; + Ga { 31 }; + Ge { 32 }; + As { 33 }; + Se { 34 }; + Br { 35 }; + Kr { 36 }; + Rb { 37 }; + Sr { 38 }; + Y { 39 }; + Zr { 40 }; + Nb { 41 }; + Mu { 42 }; + Tc { 43 }; + Ru { 44 }; + Rh { 45 }; + Pd { 46 }; + Ag { 47 }; + Cd { 48 }; + In { 49 }; + Sn { 50 }; + Sb { 51 }; + Te { 52 }; + I { 53 }; + Xe { 54 }; + Cs { 55 }; + Ba { 56 }; + La { 57 }; + Ce { 58 }; + Pr { 59 }; + Nd { 60 }; + Pm { 61 }; + Sm { 62 }; + Eu { 63 }; + Gd { 64 }; + Tb { 65 }; + Dy { 66 }; + Ho { 67 }; + Er { 68 }; + Tm { 69 }; + Yb { 70 }; + Lu { 71 }; + Hf { 72 }; + Ta { 73 }; + W { 74 }; + Re { 75 }; + Os { 76 }; + Ir { 77 }; + Pt { 78 }; + Au { 79 }; + Hg { 80 }; + Tl { 81 }; + Pb { 82 }; + Bi { 83 }; + Po { 84 }; + At { 85 }; + Rn { 86 }; + Fr { 87 }; + Ra { 88 }; + Ac { 89 }; + Th { 90 }; + Pa { 91 }; + U { 92 }; + Np { 93 }; + Pu { 94 }; + Am { 95 }; + Cm { 96 }; + Bk { 97 }; + Cf { 98 }; + Es { 99 }; + Fm {100 }; + Md {101 }; + No {102 }; + Lr {103 }; + Unq {104 }; + Unp {105 }; + Unh {106 }; diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.def b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.def new file mode 100755 index 0000000000..5d59a5e50c --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.def @@ -0,0 +1,30 @@ +#include atoms_red +#include saprc99_mosaic_4bin_vbs2.spc +#include saprc99_mosaic_4bin_vbs2.eqn + + + +#INLINE F90_RATES +!__________________________________________________ + + REAL(KIND=dp) FUNCTION Keff ( A0,B0,C0, TEMP,X1,X2,y1,y2 ) + REAL(KIND=dp),INTENT(IN) :: X1,X2,y1,y2 + REAL(KIND=dp),INTENT(IN) :: TEMP + REAL(KIND=dp),INTENT(IN):: A0,B0,C0 + Keff = A0 * EXP(- B0 /TEMP ) & + *(TEMP/300._dp)**C0*(y1*X1/(X1 + X2 + 1.0e-35) & + +y2*(1-X1/(X1 + X2 + 1.0e-35))) + END FUNCTION Keff +!__________________________________________________ + + REAL(KIND=dp) FUNCTION Keff2 ( C0,X1,X2,y1,y2 ) + REAL(KIND=dp),INTENT(IN) :: X1,X2,y1,y2 + REAL(KIND=dp),INTENT(IN):: C0 + Keff2 = C0*(y1*X1/(X1 + X2 + 1.0e-35) & + +y2*(1-X1/(X1 + X2 + 1.0e-35 ))) + END FUNCTION Keff2 +!__________________________________________________ +#ENDINLINE + + + diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.eqn b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.eqn new file mode 100755 index 0000000000..edae9aec7c --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.eqn @@ -0,0 +1,437 @@ +#EQUATIONS {SAPRC99_MOSAIC_4BIN_VBS2 by Manish Shrivastava} + +{1} NO2 + hv = NO + O3P : j(Pj_no2) ; +{2} O3P + M {O2+air} = O3 : 0.20946e0*C_M*ARR(5.68D-34,0.0_dp,-2.80_dp,TEMP) ; +{3} O3P + O3 = M {2O2} : ARR(8.00D-12,2060.0_dp,0.0_dp,TEMP) ; +{4} O3P + NO + M {AIR} = NO2 : ARR(1.00D-31,0.0_dp,-1.60_dp,TEMP) ; +{5} O3P + NO2 = NO : ARR(6.50D-12,-120.0_dp,0.0_dp,TEMP) ; +{6} O3P + NO2 = NO3 : FALL(9.00D-32,0.0_dp,-2.00_dp,2.20D-11,0.0_dp,0.0_dp,0.80_dp,TEMP,C_M) ; +{7} O3 + NO = NO2 : ARR(1.80D-12,1370.0_dp,0.0_dp,TEMP) ; +{8} O3 + NO2 = NO3 : ARR(1.40D-13,2470.0_dp,0.0_dp,TEMP) ; +{9} NO + NO3 = NO2 + NO2 : ARR(1.80D-11,-110.0_dp,0.0_dp,TEMP) ; +{10} NO + NO + M {O2} = NO2 + NO2 : 0.20946e0*ARR(3.30D-39,-530.0_dp,0.0_dp,TEMP) ; +{11} NO2 + NO3 = N2O5 : FALL(2.80D-30,0.0_dp,-3.50_dp,2.00D-12,0.0_dp,0.20_dp,0.45_dp,TEMP,C_M) ; +{12} N2O5 = NO2 + NO3 : FALL(1.D-3,11000.0_dp,-3.5_dp,9.7D14,11080.0_dp,0.1_dp,0.45_dp,TEMP,C_M) ; +{13} N2O5 + H2O = HNO3 + HNO3 : 2.60D-22 ; +{14} NO2 + NO3 = NO + NO2 : ARR(4.50D-14,1260.0_dp,0.0_dp,TEMP) ; +{15} NO3 + hv = NO : j(Pj_no3o2) ; +{16} NO3 + hv = NO2 + O3P : j(Pj_no3o) ; +{17} O3 + hv = O3P : j(Pj_o33p) ; +{18} O3 + hv = O1D : j(Pj_o31d) ; +{19} O1D + H2O = OH + OH : 2.20D-10 ; +{20} O1D + M {AIR} = O3P : ARR(2.09D-11,-95.0_dp,0.0_dp,TEMP) ; +{21} OH + NO = HONO+psd1 : FALL(7.00D-31,0.0_dp,-2.60_dp,3.60D-11,0.0_dp,-0.10_dp,0.60_dp,TEMP,C_M) ; +{22} HONO + hv = OH + NO : 0.9000_dp*j(Pj_hno2) ; +{23} HONO + hv = HO2 + NO2 : 0.1000_dp*j(Pj_hno2) ; +{24} OH + HONO = NO2+psd1 : ARR(2.70D-12,-260.0_dp,0.0_dp,TEMP) ; +{25} OH + NO2 = HNO3+psd1 : FALL(2.43D-30, 0.0_dp,-3.10_dp,1.67D-11,0.0_dp,-2.10_dp,0.60_dp,TEMP,C_M) ; +{26} OH + NO3 = HO2 + NO2+psd1 : 2.00D-11 ; +{27} OH + HNO3 = NO3+psd1 : EP2(7.20D-15,-785.0_dp,4.10D-16,-1440.0_dp,1.90D-33,-725.0_dp,TEMP,C_M) ; +{28} HNO3 + hv = OH + NO2 : j(Pj_hno3) ; +{29} OH + CO = HO2+psd1 : EP3(1.30D-13,0.0_dp,3.19D-33,0.0_dp,TEMP,C_M) ; +{30} OH + O3 = HO2+psd1 : ARR(1.90D-12,1000.0_dp,0.0_dp,TEMP) ; +{31} HO2 + NO = OH + NO2 : ARR(3.40D-12,-270.0_dp,0.0_dp,TEMP) ; +{32} HO2 + NO2 = HNO4 : FALL(1.80D-31,0.0_dp,-3.20_dp,4.70D-12,0.0_dp,0.0_dp,0.60_dp,TEMP,C_M) ; +{33} HNO4 = HO2 + NO2 : FALL(4.10D-05,10650.0_dp,0.0_dp,5.7D15,11170.0_dp,0.0_dp,0.5_dp,TEMP,C_M) ; +{34} HNO4 + hv = 0.61HO2 + 0.61NO2 + 0.39OH + + 0.39NO3 : j(Pj_hno4) ; +{35} HNO4 + OH = NO2 : ARR(1.50D-12,-360.0_dp,0.0_dp,TEMP) ; +{36} HO2 + O3 = OH : ARR(1.40D-14,600.0_dp,0.0_dp,TEMP) ; +{37} HO2 + HO2 = H2O2 : EP3(2.20D-13,-600.0_dp,1.85D-33,-980.0_dp,TEMP,C_M) ; +{38} HO2 + HO2 + H2O = H2O2 : EP3(3.08D-34,-2800.0_dp,2.59D-54,-3180.0_dp,TEMP,C_M) ; +{39} NO3 + HO2 = 0.8OH + 0.8NO2 + 0.2HNO3 : 4.00D-12 ; +{40} NO3 + NO3 = NO2 + NO2 : ARR(8.50D-13,2450.0_dp,0.0_dp,TEMP) ; +{41} H2O2 + hv = OH + OH : j(Pj_h2o2) ; +{42} H2O2 + OH = HO2 : ARR(2.90D-12,160.0_dp,0.0_dp,TEMP) ; +{43} OH + HO2 = H2O + M {O2}+psd1 : ARR(4.80D-11,-250.0_dp,0.0_dp,TEMP) ; +{44} OH + SO2 = HO2 + H2SO4+psd1 : FALL(4.00D-31,0.0_dp,-3.30_dp,2.00D-12,0.0_dp,0.0_dp,0.45_dp,TEMP,C_M) ; +{45} OH + M {H2} = HO2+psd1 : 5.40D-7*ARR(7.70D-12,2100.0_dp,0.0_dp,TEMP) ; +{46} C_O2 + NO = NO2 + HCHO + HO2 +nume: ARR(2.80D-12,-285.0_dp,0.0_dp,TEMP) ; +{47} C_O2 + HO2 = COOH +den: ARR(3.80D-13,-780.0_dp,0.0_dp,TEMP) ; +{48} C_O2 + NO3 = HCHO + HO2 + NO2 +nume: 1.30D-12 ; +{49} C_O2 + C_O2 = MEOH + HCHO +den: ARR(2.45D-14,-710.0_dp,0.0_dp,TEMP) ; +{50} C_O2 + C_O2 = HCHO + HCHO + HO2 + HO2 +den: ARR(5.90D-13,509.0_dp,0.0_dp,TEMP) ; +{51} RO2_R + NO = nume+NO2 + HO2 : ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{52} RO2_R + HO2 = ROOH+den : ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{53} RO2_R + NO3 = NO2 + HO2 +nume : 2.30D-12 ; +{54} RO2_R + C_O2 = HO2 + 0.75HCHO + + 0.25MEOH +den: 2.00D-13 ; +{55} RO2_R + RO2_R = HO2+den : 3.50D-14 ; +{56} R2O2 + NO = NO2+nume : 1.0_dp*ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{57} R2O2 + HO2 = HO2+den : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{58} R2O2 + NO3 = NO2+nume : 1.0_dp*2.30D-12 ; +{59} R2O2 + C_O2 = C_O2+den : 1.0_dp*2.00D-13 ; +{60} R2O2 + RO2_R = RO2_R+den : 1.0_dp*3.50D-14 ; +{61} R2O2 + R2O2 = R2O2 + R2O2+den : 0.0_dp ; +{62} RO2_N + NO = RNO3+nume : 1.0_dp*ARR(2.70D-12,-360.0_dp,0.0_dp,TEMP) ; +{63} RO2_N + HO2 = ROOH+den : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{64} RO2_N + C_O2 = HO2 + 0.25MEOH + + 0.5MEK + 0.5PROD2 + 0.75HCHO +den: 1.0_dp*2.00D-13 ; +{65} RO2_N + NO3 = NO2 + HO2 + MEK +nume : 1.0_dp*2.30D-12 ; +{66} RO2_N + RO2_R = HO2 + 0.5MEK + + 0.5PROD2+den : 1.0_dp*3.50D-14 ; +{67} RO2_N + R2O2 = RO2_N+den : 1.0_dp*3.50D-14 ; +{68} RO2_N + RO2_N =MEK + HO2 + PROD2+den : 1.0_dp*3.50D-14 ; +{69} CCO_O2 + NO2 = PAN : FALL(2.70D-28,0.0_dp,-7.10_dp,1.20D-11,0.0_dp,-0.90_dp,0.30_dp,TEMP,C_M) ; +{70} PAN = CCO_O2 + NO2 : FALL(4.90D-3,12100.0_dp,0.0_dp,4.0D16,13600.0_dp,0._dp,0.3_dp,TEMP,C_M) ; +{71} CCO_O2 + NO = C_O2 + NO2 : ARR(7.80D-12,-300.0_dp,0.0_dp,TEMP) ; +{72} CCO_O2 + HO2 = 0.75CCO_OOH + + 0.25CCO_OH + 0.25O3 : ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{73} CCO_O2 + NO3 = C_O2 + NO2 : 4.00D-12 ; +{74} CCO_O2 + C_O2 = CCO_OH + HCHO : ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{75} CCO_O2 + RO2_R = CCO_OH : 7.50D-12 ; +{76} CCO_O2 + R2O2 = CCO_O2 : 1.0_dp*7.50D-12 ; +{77} CCO_O2 + RO2_N = CCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{78} CCO_O2 + CCO_O2 = C_O2 + C_O2 : ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{79} RCO_O2 + NO2 = PAN2 : ARR(1.20D-11,0.0_dp,-0.90_dp,TEMP) ; +{80} PAN2 = RCO_O2 + NO2 : ARR(2.00D15,12800.0_dp,0.0_dp,TEMP) ; +{81} RCO_O2 + NO = NO2 + CCHO + RO2_R : ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{82} RCO_O2 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{83} RCO_O2 + NO3 = NO2 + CCHO + RO2_R : 1.0_dp*4.00D-12 ; +{84} RCO_O2 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{85} RCO_O2 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{86} RCO_O2 + R2O2 = RCO_O2 : 1.0_dp*7.50D-12 ; +{87} RCO_O2 + RO2_N = RCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{88} RCO_O2 + CCO_O2 = C_O2 + CCHO + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{89} RCO_O2 + RCO_O2 = CCHO + CCHO + RO2_R + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{90} BZCO_O2 + NO2 = PBZN : 1.37D-11 ; +{91} PBZN = BZCO_O2 + NO2 : ARR(7.90D16,14000.0_dp,0.0_dp,TEMP) ; +{92} BZCO_O2 + NO = NO2 + BZ_O + R2O2 : 1.0_dp*ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{93} BZCO_O2 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{94} BZCO_O2 + NO3 = NO2 + BZ_O + R2O2 : 1.0_dp*4.00D-12 ; +{95} BZCO_O2 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{96} BZCO_O2 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{97} BZCO_O2 + R2O2 = BZCO_O2 : 1.0_dp*7.50D-12 ; +{98} BZCO_O2 + RO2_N = RCO_OH + PROD2 : 1.0_dp*7.50D-12 ; +{99} BZCO_O2 + CCO_O2 = C_O2 + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{100} BZCO_O2 + RCO_O2 = CCHO + RO2_R + + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{101} BZCO_O2 + BZCO_O2 = BZ_O + BZ_O + R2O2 + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{102} MA_RCO3 + NO2 = MA_PAN : 1.0_dp*ARR(1.20D-11,0.0_dp,-0.90_dp,TEMP) ; +{103} MA_PAN = MA_RCO3 + NO2 : ARR(1.60D16,13486.0_dp,0.0_dp,TEMP) ; +{104} MA_RCO3 + NO = NO2 + HCHO + CCO_O2 : 1.0_dp*ARR(1.25D-11,-240.0_dp,0.0_dp,TEMP) ; +{105} MA_RCO3 + HO2 = 0.75RCO_OOH + + 0.25RCO_OH + 0.25O3 : 1.0_dp*ARR(4.30D-13,-1040.0_dp,0.0_dp,TEMP) ; +{106} MA_RCO3 + NO3 = NO2 + HCHO + CCO_O2 : 1.0_dp*4.00D-12 ; +{107} MA_RCO3 + C_O2 = RCO_OH + HCHO : 1.0_dp*ARR(1.80D-12,-500.0_dp,0.0_dp,TEMP) ; +{108} MA_RCO3 + RO2_R = RCO_OH : 1.0_dp*7.50D-12 ; +{109} MA_RCO3 + R2O2 = MA_RCO3 : 1.0_dp*7.50D-12 ; +{110} MA_RCO3 + RO2_N = RCO_OH + RCO_OH : 1.0_dp*7.50D-12 ; +{111} MA_RCO3 + CCO_O2 = C_O2 + HCHO + + CCO_O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{112} MA_RCO3 + RCO_O2 = HCHO + CCO_O2 + + CCHO + RO2_R : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{113} MA_RCO3 + BZCO_O2 = HCHO + CCO_O2 + + BZ_O + R2O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{114} MA_RCO3 + MA_RCO3 = HCHO + HCHO + CCO_O2 + CCO_O2 : 1.0_dp*ARR(2.90D-12,-500.0_dp,0.0_dp,TEMP) ; +{115} TBU_O + NO2 = RNO3 : 2.40D-11 ; +{116} TBU_O = ACET + C_O2 : ARR(7.50D14,8152.0_dp,0.0_dp,TEMP) ; +{117} BZ_O + NO2 = NPHE : ARR(2.30D-11,-150.0_dp,0.0_dp,TEMP) ; +{118} BZ_O + HO2 = PHEN : 1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{119} BZ_O = PHEN : 1.00D-03 ; +{120} BZNO2_O + NO2 = XN + XN + XC + XC + XC + XC + XC + XC : 1.0_dp*ARR(7.50D14,8152.0_dp,0.0_dp,TEMP) ; +{121} BZNO2_O + HO2 = NPHE : 1.0_dp*ARR(2.30D-11,-150.0_dp,0.0_dp,TEMP) ; +{122} BZNO2_O = NPHE : 1.0_dp*1.0_dp*ARR(1.90D-13,-1300.0_dp,0.0_dp,TEMP) ; +{123} HCHO + hv = HO2 + HO2 + CO : j(Pj_ch2or) ; +{124} HCHO + hv = CO : j(Pj_ch2om) ; +{125} HCHO + OH = HO2 + CO+psd1 : ARR(8.60D-12,-20.0_dp,0.0_dp,TEMP) ; +{126} HCHO + HO2 = HOCOO : ARR(9.70D-15,-625.0_dp,0.0_dp,TEMP) ; +{127} HOCOO = HO2 + HCHO : ARR(2.40D12,7000.0_dp,0.0_dp,TEMP) ; +{128} HOCOO + NO = HCOOH + NO2 + HO2 : 1.0_dp*ARR(2.80D-12,-285.0_dp,0.0_dp,TEMP) ; +{129} HCHO + NO3 = HNO3 + HO2 + CO : ARR(2.00D-12,2431.0_dp,0.0_dp,TEMP) ; +{130} CCHO + OH = CCO_O2+psd1 : ARR(5.60D-12,-310.0_dp,0.0_dp,TEMP) ; +{131} CCHO +hv = CO + HO2 + C_O2 : 0.1900_dp*j(Pj_ch2or) ; +{132} CCHO + NO3 = HNO3 + CCO_O2 : ARR(1.40D-12,1860.0_dp,0.0_dp,TEMP) ; +{133} RCHO + OH = 0.034RO2_R + 0.001RO2_N + + 0.965RCO_O2 + 0.034CO+ 0.034CCHO +psd1 : 2.00D-11 ; +{134} RCHO + hv = CCHO + RO2_R + CO + HO2 : 0.6500_dp*j(Pj_ch2or) ; +{135} RCHO + NO3 = HNO3 + RCO_O2 : ARR(1.40D-12,1771.0_dp,0.0_dp,TEMP) ; +{136} ACET + OH = HCHO + CCO_O2 + R2O2 +psd1 : ARR(1.10D-12,520.0_dp,0.0_dp,TEMP) ; +{137} ACET + hv = CCO_O2 + C_O2 : 0.0230_dp*j(Pj_ch2or) ; +{138} MEK + OH = 0.37RO2_R + 0.042RO2_N + + 0.616R2O2+ 0.492CCO_O2 + + 0.096RCO_O2 + 0.115HCHO + + 0.482CCHO + 0.37RCHO +psd1: ARR(1.30D-12,25.0_dp,2.0_dp,TEMP) ; +{139} MEK + hv = CCO_O2 + CCHO + RO2_R : 0.0650_dp*j(Pj_ch2or) ; +{140} MEOH + OH = HCHO + HO2+psd1 : ARR(3.10D-12,360.0_dp,2.0_dp,TEMP) ; +{141} ETOH + OH = 0.95HO2 + 0.05RO2_R + + 0.081HCHO + 0.96CCHO+psd1 : ARR(0.0_dp,0.0_dp,1.0_dp,TEMP) ; +{142} COOH + OH = 0.35HCHO + 0.35OH + + 0.65C_O2+psd1 : ARR(2.90D-12,-190.0_dp,0.0_dp,TEMP) ; +{143} COOH + hv = HCHO + HO2 + OH : j(Pj_ch3o2h) ; +{144} ROOH + OH = RCHO + 0.34RO2_R + + 0.66OH +psd1 : 1.10D-11 ; +{145} ROOH + hv = RCHO + HO2 + OH : 0.2100_dp*j(Pj_ch2or) ; +{146} GLY + hv = CO + CO + HO2 + HO2 : j(Pj_hcochob) ; +{147} GLY + hv = HCHO + CO : 0.2000_dp*j(Pj_hcocho) ; +{148} GLY + OH = 0.63HO2 + 1.26CO+ + 0.37RCO_O2+psd1 : 1.10D-11 ; +{149} GLY + NO3 = HNO3 + 0.63HO2 + + 1.26CO+ 0.37RCO_O2 : ARR(2.80D-12,2376.0_dp,0.0_dp,TEMP) ; +{150} MGLY + hv = HO2 + CO + CCO_O2 : 1.3000_dp*j(Pj_ch3cocho) ; +{151} MGLY + OH = CO + CCO_O2+psd1 : 1.50D-11 ; +{152} MGLY + NO3 = HNO3 + CO + CCO_O2 : ARR(1.40D-12,1895.0_dp,0.0_dp,TEMP) ; +{153} BACL + hv = CCO_O2 + CCO_O2 : 2.3000_dp*j(Pj_ch3cocho) ; +{154} PHEN + OH = 0.24BZ_O + 0.76RO2_R + + 0.23GLY+psd1 : 2.63D-11 ; +{155} PHEN + NO3 = HNO3 + BZ_O : 3.78D-12 ; +{156} CRES + OH = 0.24BZ_O + 0.76RO2_R + + 0.23MGLY+psd1 : 4.20D-11 ; +{157} CRES + NO3 = HNO3 + BZ_O : 1.37D-11 ; +{158} NPHE + NO3 = HNO3 + BZNO2_O : 1.0_dp*2.63D-11 ; +{159} BALD + OH = BZCO_O2 +psd1: 1.29D-11 ; +{160} BALD + hv = XC + XC + XC + XC + XC + XC + XC : 1.7000_dp*j(Pj_ch2or) ; +{161} BALD + NO3 = HNO3 + BZCO_O2 : ARR(1.40D-12,1872.0_dp,0.0_dp,TEMP) ; +{162} METHACRO + OH = 0.5RO2_R + 0.416CO+ + 0.084HCHO + 0.416MEK + + 0.084MGLY + 0.5MA_RCO3+psd1 : ARR(1.86D-11,-176.0_dp,0.0_dp,TEMP) ; +{163} METHACRO + O3 = 0.008HO2 + 0.1RO2_R + + 0.208OH + 0.1RCO_O2 + 0.45CO+ + 0.2HCHO + 0.9MGLY + 0.333HCOOH : ARR(1.36D-15,2114.0_dp,0.0_dp,TEMP) ; +{164} METHACRO + NO3 = 0.5HNO3 + 0.5RO2_R + + 0.5CO+ 0.5MA_RCO3 : ARR(1.50D-12,1726.0_dp,0.0_dp,TEMP) ; +{165} METHACRO + O3P = RCHO : 6.34D-12 ; +{166} METHACRO + hv = 0.34HO2 + 0.33RO2_R + + 0.33OH + 0.67CCO_O2 + 0.67CO+ + 0.67HCHO + 0.33MA_RCO3 : 0.0470_dp*j(Pj_ch2om) ; +{167} MVK + OH = 0.3RO2_R + 0.025RO2_N + + 0.675R2O2+ 0.675CCO_O2 + + 0.3HCHO + 0.675RCHO + 0.3MGLY +psd1: ARR(4.14D-12,-453.0_dp,0.0_dp,TEMP) ; +{168} MVK + O3 = 0.064HO2 + 0.05RO2_R + + 0.164OH + 0.05RCO_O2 + 0.475CO+ + 0.1HCHO + 0.95MGLY + 0.351HCOOH : ARR(7.51D-16,1520.0_dp,0.0_dp,TEMP) ; +{169} MVK + O3P = 0.45RCHO + 0.55MEK : 4.32D-12 ; +{170} MVK + hv = 0.3C_O2 + 0.7CO+ 0.7PROD2 + + 0.3MA_RCO3 : 0.6300_dp*j(Pj_macr) ; +{171} ISOPROD + OH = 0.67RO2_R + + 0.041RO2_N + 0.289MA_RCO3 + + 0.336CO+ 0.055HCHO + 0.129CCHO + + 0.013RCHO + 0.15MEK + 0.332PROD2 + + 0.15GLY + 0.174MGLY+psd1 : 6.19D-11 ; +{172} ISOPROD + O3 = 0.4HO2 + 0.048RO2_R + + 0.048RCO_O2 + 0.285OH + + 0.498CO+ 0.125HCHO + 0.047CCHO + + 0.21MEK + 0.023GLY + 0.742MGLY + + 0.1HCOOH + 0.372RCO_OH : 4.18D-18 ; +{173} ISOPROD + NO3 = 0.799RO2_R + + 0.051RO2_N + 0.15MA_RCO3 + 0.572CO+ + 0.15HNO3 + 0.227HCHO + 0.218RCHO + + 0.008MGLY + 0.572RNO3 : 1.00D-13 ; +{174} ISOPROD + hv = 1.233HO2 + 0.467CCO_O2 + + 0.3RCO_O2 + 1.233CO+ 0.3HCHO + + 0.467CCHO + 0.233MEK : 0.0038_dp*j(Pj_hcochest) ; +{175} PROD2 + OH = 0.379HO2 + 0.473RO2_R + + 0.07RO2_N + 0.029CCO_O2 + + 0.049RCO_O2 + 0.213HCHO + + 0.084CCHO + 0.558RCHO + + 0.115MEK + 0.329PROD2+psd1 : 1.50D-11 ; +{176} PROD2 + hv = 0.96RO2_R + 0.04RO2_N + + 0.515R2O2+ 0.667CCO_O2 + + 0.333RCO_O2 + 0.506HCHO + + 0.246CCHO + 0.71RCHO : 0.3000_dp*j(Pj_ch3coc2h5) ; +{177} RNO3 + OH = 0.338NO2 + 0.113HO2 + + 0.376RO2_R + 0.173RO2_N + + 0.596R2O2+ 0.01HCHO + + 0.439CCHO + 0.213RCHO + + 0.006ACET + 0.177MEK + + 0.048PROD2 + 0.31RNO3+psd1 : 7.80D-12 ; +{178} RNO3 + hv = NO2 + 0.341HO2 + 0.564RO2_R + + 0.095RO2_N + 0.152R2O2+ 0.134HCHO + + 0.431CCHO + 0.147RCHO + 0.02ACET + + 0.243MEK + 0.435PROD2 : 1.2000_dp*j(Pj_ch3ono2) ; +{179} DCB1 + OH = RCHO + RO2_R + CO +psd1 : 5.00D-11 ; +{180} DCB1 + O3 = 1.5HO2 + 0.5OH + + 1.5CO + GLY : 2.00D-18 ; +{181} DCB2 + OH = R2O2 + RCHO + CCO_O2+psd1 : 5.00D-11 ; +{182} DCB2 + hv = RO2_R + 0.5CCO_O2 + 0.5HO2 + + CO + R2O2 + 0.5GLY + 0.5MGLY : 2.0000_dp*j(Pj_hcochest) ; +{183} DCB3 + OH = R2O2 + RCHO + CCO_O2+psd1 : 5.00D-11 ; +{184} DCB3 + hv = RO2_R + 0.5CCO_O2 + 0.5HO2 + + CO + R2O2 + 0.5GLY + 0.5MGLY : 6.8000_dp*j(Pj_hcochest) ; +{185} CH4 + OH = C_O2+psd1 : ARR(2.15D-12,1735.0_dp,0.0_dp,TEMP) ; +{186} ETHENE + OH = RO2_R + 1.61HCHO + + 0.195CCHO+psd1 : ARR(1.96D-12,-438.0_dp,0.0_dp,TEMP) ; +{187} ETHENE + O3 = 0.12OH + 0.12HO2 + + 0.5CO+ HCHO + 0.37HCOOH : ARR(9.14D-15,2580.0_dp,0.0_dp,TEMP) ; +{188} ETHENE + NO3 = RO2_R + RCHO : ARR(4.39D-13,2282.0_dp,2.0_dp,TEMP) ; +{189} ETHENE + O3P = 0.5HO2 + 0.2RO2_R + + 0.3C_O2 + 0.491CO+ 0.191HCHO + + 0.25CCHO + 0.009GLY : ARR(1.04D-11,792.0_dp,0.0_dp,TEMP) ; +{190} ISOPRENE + OH = 0.907RO2_R + + 0.093RO2_N + 0.079R2O2+ + 0.624HCHO + 0.23METHACRO + + 0.32MVK + 0.357ISOPROD+psd1 : ARR(2.50D-11,-408.0_dp,0.0_dp,TEMP) ; +{191} ISOPRENE + O3 = 0.266OH + + 0.066RO2_R + 0.008RO2_N + + 0.126R2O2+ 0.192MA_RCO3 + + 0.275CO+ 0.592HCHO + 0.1PROD2 + + 0.39METHACRO + 0.16MVK + + 0.204HCOOH + 0.15RCO_OH : ARR(7.86D-15,1912.0_dp,0.0_dp,TEMP) ; +{192} ISOPRENE + NO3 = 0.187NO2 + + 0.749RO2_R + 0.064RO2_N + + 0.187R2O2+ 0.936ISOPROD : ARR(3.03D-12,448.0_dp,0.0_dp,TEMP) ; +{193} ISOPRENE + O3P = 0.01RO2_N + + 0.24R2O2+ 0.25C_O2 + 0.24MA_RCO3 + + 0.24HCHO + 0.75PROD2 : 3.60D-11 ; +{194} TERP + OH = 0.75RO2_R + 0.25RO2_N + + 0.5R2O2+ 0.276HCHO + + 0.474RCHO + 0.276PROD2+psd1 : ARR(1.83D-11,-449.0_dp,0.0_dp,TEMP) ; +{195} TERP + O3 = 0.567OH + 0.033HO2 + + 0.031RO2_R + 0.18RO2_N + + 0.729R2O2+ 0.123CCO_O2 + + 0.201RCO_O2 + 0.157CO+ + 0.235HCHO + 0.205RCHO + 0.13ACET + + 0.276PROD2 + 0.001GLY + 0.031BACL + + 0.103HCOOH + 0.189RCO_OH : ARR(1.08D-15,821.0_dp,0.0_dp,TEMP) ; +{196} TERP + NO3 = 0.474NO2 + + 0.276RO2_R + 0.25RO2_N + + 0.75R2O2+ 0.474RCHO + 0.276RNO3 : ARR(3.66D-12,-175.0_dp,0.0_dp,TEMP) ; +{197} TERP + O3P = 0.147RCHO + 0.853PROD2 : 3.27D-11 ; +{198} SESQ + OH = 0.75RO2_R + 0.25RO2_N + + 0.5R2O2+ 0.276HCHO + + 0.474RCHO + 0.276PROD2+psd1 : ARR(1.83D-11,-449.0_dp,0.0_dp,TEMP) ; +{199} SESQ + O3 = 0.567OH + 0.033HO2 + + 0.031RO2_R + 0.18RO2_N + + 0.729R2O2+ 0.123CCO_O2 + + 0.201RCO_O2 + 0.157CO+ + 0.235HCHO + 0.205RCHO + 0.13ACET + + 0.276PROD2 + 0.001GLY + 0.031BACL + + 0.103HCOOH + 0.189RCO_OH : ARR(1.08D-15,821.0_dp,0.0_dp,TEMP) ; +{200} SESQ + NO3 = 0.474NO2 + + 0.276RO2_R + 0.25RO2_N + + 0.75R2O2+ 0.474RCHO + 0.276RNO3 : ARR(3.66D-12,-175.0_dp,0.0_dp,TEMP) ; +{201} SESQ + O3P = 0.147RCHO + 0.853PROD2 : 3.27D-11 ; + +{202} C2H6 + OH = RO2_R + CCHO+psd1 : ARR(1.37D-12,498.0_dp,2.0_dp,TEMP) ; +{203} C3H8 + OH = 0.965RO2_R + 0.035RO2_N + + 0.261RCHO + 0.704ACET+psd1 : ARR(0.0_dp,0.0_dp,1.0_dp,TEMP) ; +{204} C2H2 + OH = 0.603OH + 0.297HO2 + + 0.1RO2_R + 0.393CO + 0.096HCHO + + 0.607GLY + 0.297HCOOH+psd1 : ARR(9.87D-12,671.0_dp,0.0_dp,TEMP) ; +{205} ALK3 + OH = 0.695RO2_R + 0.07RO2_N + + 0.559R2O2+ 0.236TBU_O + 0.026HCHO + + 0.445CCHO + 0.122RCHO + 0.024ACET + + 0.332MEK+psd1 : ARR(1.019D-11,434.0_dp,0.0_dp,TEMP) ; +{206} ALK4 + OH = 0.835RO2_R + 0.143RO2_N + + 0.936R2O2+ 0.011C_O2 + 0.011CCO_O2 + + 0.002CO+ 0.024HCHO + 0.455CCHO + + 0.244RCHO + 0.452ACET + 0.11MEK + + 0.125PROD2+psd1 : ARR(5.946D-12,91.0_dp,0.0_dp,TEMP) ; +{207} ALK5 + OH = 0.653RO2_R + 0.347RO2_N + + 0.948R2O2+ 0.026HCHO + 0.099CCHO + + 0.204RCHO + 0.072ACET + 0.089MEK + + 0.417PROD2+psd1 : ARR(1.112D-11,52.0_dp,0.0_dp,TEMP) ; +{208} ARO1 + OH = 0.224HO2 + 0.765RO2_R + + 0.011RO2_N + 0.055PROD2 + 0.118GLY + + 0.119MGLY + 0.017PHEN + 0.207CRES + + 0.059BALD + 0.491DCB1 + 0.108DCB2 + + 0.051DCB3+psd1 : ARR(1.81D-12,-355.0_dp,0.0_dp,TEMP) ; +{209} ARO2 + OH = 0.187HO2 + 0.804RO2_R + + 0.009RO2_N + 0.097GLY + 0.287MGLY + + 0.087BACL + 0.187CRES + 0.05BALD + + 0.561DCB1 + 0.099DCB2 + 0.093DCB3+psd1 : 2.640D-11 ; +{210} OLE1 + OH = 0.91RO2_R + 0.09RO2_N + + 0.205R2O2+ 0.732HCHO + 0.294CCHO + + 0.497RCHO + 0.005ACET + 0.119PROD2 + psd1 : ARR(7.095D-12,-451.0_dp,0.0_dp,TEMP) ; +{211} OLE1 + O3 = 0.155OH + 0.056HO2 + + 0.022RO2_R + 0.001RO2_N + + 0.076C_O2 + 0.345CO+ 0.5HCHO + + 0.154CCHO + 0.363RCHO + 0.001ACET + + 0.215PROD2 + 0.185HCOOH + + 0.05CCO_OH + 0.119RCO_OH : ARR(2.617D-15,1640.0_dp,0.0_dp,TEMP) ; +{212} OLE1 + NO3 = 0.824RO2_R + 0.176RO2_N + + 0.488R2O2+ 0.009CCHO + 0.037RCHO + + 0.024ACET + 0.511RNO3 : ARR(4.453D-14,376.0_dp,0.0_dp,TEMP) ; +{213} OLE1 + O3P = 0.45RCHO + 0.437MEK + + 0.113PROD2 : ARR(1.074D-11,234.0_dp,0.0_dp,TEMP) ; +{214} OLE2 + OH = 0.918RO2_R + 0.082RO2_N + + 0.001R2O2+ 0.244HCHO + 0.732CCHO + + 0.511RCHO + 0.127ACET + 0.072MEK + + 0.061BALD + 0.025METHACRO + + 0.025ISOPROD + psd1 : ARR(1.743D-11,-384.0_dp,0.0_dp,TEMP) ; +{215} OLE2 + O3 = 0.378OH + 0.003HO2 + + 0.033RO2_R + 0.002RO2_N + 0.137R2O2+ + 0.197C_O2 + 0.137CCO_O2 + + 0.006RCO_O2 + 0.265CO+ 0.269HCHO + + 0.456CCHO + 0.305RCHO + 0.045ACET + + 0.026MEK + 0.043PROD2 + 0.042BALD + + 0.026METHACRO + 0.019MVK + + 0.073HCOOH + 0.129CCO_OH + + 0.247RCO_OH : ARR(5.022D-16,461.0_dp,0.0_dp,TEMP) ; +{216} OLE2 + NO3 = 0.391NO2 + 0.442RO2_R + + 0.136RO2_N + 0.711R2O2+ 0.03C_O2 + + 0.079HCHO + 0.507CCHO + 0.151RCHO + + 0.102ACET + 0.001MEK + 0.015BALD + + 0.048MVK + 0.321RNO3 : 7.265D-13 ; +{217} OLE2 + O3P = 0.013HO2 + 0.012RO2_R + + 0.001RO2_N + 0.012CO+ 0.069RCHO + + 0.659MEK + 0.259PROD2 + + 0.012METHACRO : 2.085D-11 ; +{218} C2H2 + O3 = 0.5OH + 1.5HO2 + + 1.5CO + 0.5CO2 : 2.20D-10 ; +{219} C3H6 + OH = 0.984RO2_R + 0.016RO2_N + + 0.984HCHO + 0.984CCHO + 0.048XC +psd1 : 2.20D-10 ; +{220} C3H6 + O3 = 0.32OH + 0.06HO2 + + 0.26C_O2 + 0.51CO + 0.135CO2 + 0.5HCHO + + 0.5CCHO + 0.185HCOOH + 0.17CCO_OH + 0.07XC : 2.20D-10 ; +{221} C3H6 + NO3 = 0.949RO2_R + 0.051RO2_N + + 2.693XC + 1.0XN : 2.20D-10 ; +{222} C3H6 + O3P = 0.45RCHO + 0.55MEK + + 0.55XC : 2.20D-10 ; +{223} SO2 = H2SO4 : 2.20D-10 ; +{224} HO2 = PROD : 7.0D-7 ; +{225} SO2 = PROD : 2.20D-10 ; +{226} H2SO4 = PROD : 2.20D-10 ; +{227} HNO3 = PROD : 2.20D-10 ; +{228} H2O2 = PROD : 2.20D-10 ; +{229} CO2 = PROD : 7.0D-7 ; + {230} ALK4 + OH = ant1_c + ALK4 + OH : Keff(5.946D-12,91.0_dp,0.0_dp,TEMP,nume,den,0.011_dp,0.022_dp) ; + {231} ALK5 + OH = ant1_c + ALK5 + OH : Keff(1.112D-11,52.0_dp,0.0_dp,TEMP,nume,den,0.064_dp,0.128_dp) ; + {232} OLE1 + OH = ant1_c + OLE1 + OH : Keff(7.095D-12,-451.0_dp,0.0_dp,TEMP,nume,den,0.0002_dp,0.0012_dp) ; + {233} OLE2 + OH = ant1_c + OLE2 + OH : Keff(1.743D-11,-384.0_dp,0.0_dp,TEMP,nume,den,0.0009_dp,0.0073_dp) ; + {234} ARO1 + OH = ant1_o + ARO1 + OH : Keff(1.81D-12,-355.0_dp,0.0_dp,TEMP,nume,den,0.0322_dp,0.1222_dp) ; + {235} ARO2 + OH = ant1_o + ARO2 + OH : Keff2(2.640D-11,nume,den,0.016_dp,0.1672_dp) ; + {236} ISOPRENE + OH = biog1_c + ISOPRENE + OH : Keff(2.50D-11,-408.0_dp,0.0_dp,TEMP,nume,den,0.0104_dp,0.0027_dp) ; + {237} TERP + OH = biog1_o + TERP + OH : Keff(1.83D-11,-449.0_dp,0.0_dp,TEMP,nume,den,0.036_dp,0.2065_dp) ; + {238} SESQ + OH = biog1_o + SESQ + OH : Keff(1.83D-11,-449.0_dp,0.0_dp,TEMP,nume,den,0.6912_dp,0.3403_dp) ; + {239} PCG1_B_C + OH = PCG1_B_C + psd2 : 0.0D0; + {240} PCG1_B_O + OH = PCG1_B_O +OH+ psd2 : 0.0D0; + {241} OPCG1_B_C + OH = OPCG1_B_C + psd2 : 0.0D0; + {242} OPCG1_B_O + OH = OPCG1_B_O +OH+ psd2 : 0.0D0; + {243} PCG1_F_C + OH = PCG1_F_C + psd2 : 0.0D0; + {244} PCG1_F_O + OH = PCG1_F_O +OH + psd2 : 0.0D0; + {245} OPCG1_F_C + OH = OPCG1_F_C + psd2 : 0.0D0; + {246} OPCG1_F_O + OH = OPCG1_F_O +OH + psd2 : 0.0D0; + {247} PCG2_B_C + OH = OPCG1_B_C + 0.5OPCG1_B_O + psd2 : 0.5714D-11 ; + {248} PCG2_B_O + OH = OPCG1_B_O +OH + psd2 : 0.5714D-11 ; + {249} PCG2_F_C + OH = OPCG1_F_C + 0.5OPCG1_F_O + psd2 : 0.5714D-11 ; + {250} PCG2_F_O + OH = OPCG1_F_O +OH + psd2 : 0.5714D-11 ; + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.kpp b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.kpp new file mode 100644 index 0000000000..472e2d9285 --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.kpp @@ -0,0 +1,10 @@ +#MODEL saprc99_mosaic_4bin_vbs2 +#LANGUAGE Fortran90 +#DOUBLE ON +#INTEGRATOR WRF_conform/rosenbrock +#DRIVER general +#JACOBIAN SPARSE_LU_ROW +#HESSIAN OFF +#STOICMAT OFF +#WRFCONFORM + diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.spc b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.spc new file mode 100755 index 0000000000..253c229a4b --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2.spc @@ -0,0 +1,104 @@ +#DEFVAR + O3 = 3O; + H2O2 = 2H + 2O; + NO = N + O; + NO2 = N + 2O; + NO3 = N + 3O; + N2O5 = 2N + 5O; + HONO = H + 2O + N; + HNO3 = H + N + 3O; + HNO4 = H + N + 4O; + SO2 = S + 2O; + H2SO4 = 2H + S + 4O; + CO = C + O; + HCHO = 2H + C + O; + CCHO = 2C + H + O; + RCHO = 3C + IGNORE; + ACET = IGNORE; + MEK = IGNORE; + HCOOH = 2H + C + 2O; + MEOH = IGNORE; + ETOH = IGNORE; + CCO_OH = IGNORE; + RCO_OH = IGNORE; + GLY = IGNORE; + MGLY = 3C + 4H + 2O; + BACL = IGNORE; + CRES = IGNORE; + BALD = IGNORE; + ISOPROD = IGNORE; + METHACRO = IGNORE; + MVK = IGNORE; + PROD2 = IGNORE; + DCB1 = IGNORE; + DCB2 = IGNORE; + DCB3 = IGNORE; + ETHENE = 2C + 4H; + ISOPRENE = IGNORE; + C2H6 = 2C + 6H; + C3H8 = 3C + 8H; + C2H2 = 2C + 2H; + C3H6 = 3C + 6H; + ALK3 = IGNORE; + ALK4 = IGNORE; + ALK5 = IGNORE; + ARO1 = IGNORE; + ARO2 = IGNORE; + OLE1 = IGNORE; + OLE2 = IGNORE; + TERP = IGNORE; + SESQ = IGNORE; + RNO3 = IGNORE; + NPHE = IGNORE; + PHEN = IGNORE; + PAN = 2C + 3H + 5O + N; + PAN2 = N + IGNORE; + PBZN = N + IGNORE; + MA_PAN = N + IGNORE; + CO2 = C + 2O; + CCO_OOH = 2C + 3O + H; + RCO_O2 = IGNORE; + RCO_OOH = IGNORE; + XN = IGNORE; + XC = IGNORE; + O3P = O; + O1D = O; + OH = H + O; + HO2 = H+ 2O; + C_O2 = IGNORE; + COOH = C + 2O + H; + ROOH = IGNORE; + RO2_R = IGNORE; + R2O2 = IGNORE; + RO2_N = IGNORE; + HOCOO = H + 3O + C; + CCO_O2 = IGNORE; + BZCO_O2 = IGNORE; + BZNO2_O = IGNORE; + BZ_O = IGNORE; + MA_RCO3 = IGNORE; + TBU_O = IGNORE; + NUME = IGNORE; + DEN=IGNORE; + ANT1_c=IGNORE; + ANT1_o=IGNORE; + BIOG1_c=IGNORE; + BIOG1_o=IGNORE; + PSD1=IGNORE; + PSD2=IGNORE; + PCG1_B_C = IGNORE; + PCG2_B_C = IGNORE; + PCG1_B_O = IGNORE; + PCG2_B_O = IGNORE; + OPCG1_B_C = IGNORE; + OPCG1_B_O = IGNORE; + PCG1_F_C = IGNORE; + PCG2_F_C = IGNORE; + PCG1_F_O = IGNORE; + PCG2_F_O = IGNORE; + OPCG1_F_C = IGNORE; + OPCG1_F_O = IGNORE; + CH4 = C + 4H; +#DEFFIX + H2O = 2H + O; + M = IGNORE; diff --git a/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2_wrfkpp.equiv b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2_wrfkpp.equiv new file mode 100644 index 0000000000..d8932228df --- /dev/null +++ b/chem/KPP/mechanisms/saprc99_mosaic_4bin_vbs2/saprc99_mosaic_4bin_vbs2_wrfkpp.equiv @@ -0,0 +1,9 @@ +! use this file for species that have different +! names in WRF and KPP +! +! currently case sensitive ! +! +! left column right column +! name in WRF name in KPP +HO OH + diff --git a/chem/KPP/util/wkc/get_wrf_chem_specs.c b/chem/KPP/util/wkc/get_wrf_chem_specs.c index 3399c64aaf..ec106f206e 100644 --- a/chem/KPP/util/wkc/get_wrf_chem_specs.c +++ b/chem/KPP/util/wkc/get_wrf_chem_specs.c @@ -19,11 +19,11 @@ int get_wrf_chem_specs ( ) { node_t * pkg; - char assoc_namelist_var[NAMELEN]; - char scalars_str[NAMELEN] ; + char assoc_namelist_var[NAMELEN_LONG]; + char scalars_str[NAMELEN_LONG] ; char * scalar ; char * suffix; - char pname[NAMELEN] ; + char pname[NAMELEN_LONG] ; int j; knode_t * q , * member ; diff --git a/chem/Makefile b/chem/Makefile index 2be8ae4099..c4cc2585c5 100755 --- a/chem/Makefile +++ b/chem/Makefile @@ -76,6 +76,7 @@ MODULES = \ module_cbmz_initmixrats.o \ module_cbm4_initmixrats.o \ module_optical_averaging.o \ + module_data_rrtmgaeropt.o \ module_mosaic_initmixrats.o \ module_mosaic_wetscav.o \ module_wetdep_ls.o \ @@ -259,7 +260,7 @@ module_fastj_data.o: module_fastj_mie.o: -module_optical_averaging.o: module_data_sorgam.o +module_optical_averaging.o: module_data_sorgam.o module_data_rrtmgaeropt.o module_ctrans_grell.o: module_dep_simple.o @@ -269,7 +270,7 @@ module_aer_drydep.o: module_aerosols_sorgam.o module_mosaic_drydep.o chem_driver.o: module_radm.o module_convtrans_prep.o module_chem_utilities.o module_data_radm2.o module_dep_simple.o module_bioemi_simple.o module_vertmx_wrf.o module_phot_mad.o module_aerosols_sorgam.o module_data_cbmz.o module_cbmz.o module_wetscav_driver.o dry_dep_driver.o emissions_driver.o module_input_tracer.o module_input_tracer_data.o -chemics_init.o: module_cbm4_initmixrats.o module_phot_mad.o module_gocart_chem.o module_aerosols_sorgam.o module_mixactivate_wrappers.o +chemics_init.o: module_cbm4_initmixrats.o module_cbmz_initmixrats.o module_data_gocart_dust.o module_data_gocart_seas.o module_data_gocartchem.o module_gocart_chem.o module_dep_simple.o module_ftuv_driver.o module_phot_mad.o module_gocart_chem.o module_aerosols_sorgam.o module_mixactivate_wrappers.o aerosol_driver.o: module_data_sorgam.o module_aerosols_sorgam.o module_mosaic_driver.o diff --git a/chem/aerosol_driver.F b/chem/aerosol_driver.F index 3b50071199..f6e4e292f4 100755 --- a/chem/aerosol_driver.F +++ b/chem/aerosol_driver.F @@ -7,7 +7,7 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, & config_flags,dtstepc,dx, & alt,t_phy,moist,aerwrf,p8w,t8w,p_phy,chem,rho_phy,dz8w, & - z,z_at_w,h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1, & + z,z_at_w,vbs_nbin,h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1, & cvaro2,cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2,vcsulf_old,& vdrog3, & ids,ide, jds,jde, kds,kde, & @@ -106,7 +106,7 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte, & - id,ktau,ktauc + id,ktau,ktauc,vbs_nbin REAL(KIND=8), INTENT(IN ) :: curr_secs REAL, INTENT(IN ) :: dtstep,dtstepc,dx ! @@ -217,12 +217,14 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) - CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, & + CBMZ_MOSAIC_8BIN_AQ, SAPRC99_MOSAIC_4BIN_VBS2_KPP, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) CALL wrf_debug(15,'aerosols_driver calling mosaic_aerchem_driver') CALL mosaic_aerchem_driver( & id, curr_secs, ktau, dtstep, ktauc, dtstepc, config_flags, & t_phy, rho_phy, p_phy, & - moist, chem, & + moist, chem,vbs_nbin, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -242,13 +244,24 @@ END SUBROUTINE aerosols_driver SUBROUTINE sum_pm_driver ( config_flags, & alt, chem, h2oaj, h2oai, & pm2_5_dry, pm2_5_water, pm2_5_dry_ec, pm10, & - ids,ide, jds,jde, kds,kde, & - ims,ime, jms,jme, kms,kme, & - its,ite, jts,jte, kts,kte ) + hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) USE module_configure USE module_aerosols_sorgam, only: sum_pm_sorgam - USE module_mosaic_driver, only: sum_pm_mosaic + USE module_mosaic_driver, only: sum_pm_mosaic,sum_pm_mosaic_vbs2,sum_vbs9,sum_vbs2 USE module_gocart_aerosols, only: sum_pm_gocart IMPLICIT NONE @@ -268,7 +281,19 @@ SUBROUTINE sum_pm_driver ( config_flags, & REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & OPTIONAL, & - INTENT(OUT) :: pm2_5_dry,pm2_5_water,pm2_5_dry_ec,pm10 + INTENT(OUT) :: pm2_5_dry,pm2_5_water,pm2_5_dry_ec,pm10, & + hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4 + TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags ! @@ -285,7 +310,7 @@ SUBROUTINE sum_pm_driver ( config_flags, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) - CASE (RADM2SORG,RADM2SORG_AQ,RACMSORG_AQ,RADM2SORG_KPP,RACMSORG_KPP,RACM_ESRLSORG_KPP) + CASE (RADM2SORG,RADM2SORG_AQ,RACMSORG_AQ,RADM2SORG_KPP,RACMSORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ) CALL wrf_debug(15,'sum_pm_driver: calling sum_pm_sorgam') CALL sum_pm_sorgam ( & alt, chem, h2oaj, h2oai, & @@ -294,7 +319,8 @@ SUBROUTINE sum_pm_driver ( config_flags, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) - CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) CALL wrf_debug(15,'sum_pm_driver: calling sum_pm_mosaic') call sum_pm_mosaic ( & alt, chem, & @@ -303,6 +329,35 @@ SUBROUTINE sum_pm_driver ( config_flags, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) + CASE (SAPRC99_MOSAIC_4BIN_VBS2_KPP) + + CALL wrf_debug(15,'sum_pm_driver: calling sum_pm_mosaic_vbs2') + call sum_pm_mosaic_vbs2 ( & + alt, chem, & + pm2_5_dry, pm2_5_water, pm2_5_dry_ec, pm10, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + + CALL wrf_debug(15,'sum_pm_driver: calling sum_vbs2') + call sum_vbs2 ( & + alt, chem, & + hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + + CASE DEFAULT END SELECT sum_pm_select diff --git a/chem/chem_driver.F b/chem/chem_driver.F index c420dd10ce..7a47c02e63 100755 --- a/chem/chem_driver.F +++ b/chem/chem_driver.F @@ -425,6 +425,18 @@ subroutine chem_driver ( grid , config_flags & CASE (GOCARTRADM2) CALL wrf_debug(15,'calling gocart and radm driver from chem_driver') haveaer = .false. + CASE (SAPRC99_KPP) + CALL wrf_debug(15,'calling saprc99_kpp from chem_driver') + haveaer = .false. + CASE (SAPRC99_MOSAIC_4BIN_VBS2_KPP) + CALL wrf_debug(15,'calling saprc99_mosaic_4bin_vbs2_kpp from chem_driver') + haveaer = .false. + CASE (CBMZSORG) + CALL wrf_debug(15,'calling cbmzsorg aerosols from chem_driver') + haveaer = .true. + CASE (CBMZSORG_AQ) + CALL wrf_debug(15,'calling cbmzsorg_aq aerosols from chem_driver') + haveaer = .true. CASE (CBMZ) CALL wrf_debug(15,'calling cbmz from chem_driver') haveaer = .false. @@ -434,6 +446,9 @@ subroutine chem_driver ( grid , config_flags & CASE (CBMZ_BB_KPP) CALL wrf_debug(15,'calling cbmz_bb_kpp from chem_driver') haveaer = .false. + CASE (CBMZ_MOSAIC_KPP) + CALL wrf_debug(15,'calling cbmz_mosaic_kpp from chem_driver') + haveaer = .false. CASE (CBMZ_MOSAIC_4BIN) CALL wrf_debug(15,'calling cbmz_mosaic_4bin aerosols driver from chem_driver') haveaer = .true. @@ -609,6 +624,19 @@ subroutine chem_driver ( grid , config_flags & enddo enddo enddo + +! Special treatment of CH4 in SAPRC99 + case (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) + CALL wrf_debug ( 15 , ' fixing ch4 conc using co conc' ) + do j=jps,jpe + do k=kps,kpe + do i=ips,ipe + chem(i,k,j,p_ch4)=1.74 + enddo + enddo + enddo + + end select @@ -808,10 +836,21 @@ subroutine chem_driver ( grid , config_flags & chem,dz8w,rri,rh, & grid%h2oai,grid%h2oaj, & grid%tauaer1,grid%tauaer2,grid%tauaer3,grid%tauaer4, & + !czhao + grid%extaer1,grid%extaer2,grid%extaer3,grid%extaer4, & grid%gaer1,grid%gaer2,grid%gaer3,grid%gaer4, & grid%waer1,grid%waer2,grid%waer3,grid%waer4, & grid%bscoef1,grid%bscoef2,grid%bscoef3,grid%bscoef4, & grid%l2aer,grid%l3aer,grid%l4aer,grid%l5aer,grid%l6aer,grid%l7aer, & + grid%totoa_a01,grid%totoa_a02,grid%totoa_a03,grid%totoa_a04, & + grid%extaerlw1,grid%extaerlw2,grid%extaerlw3,grid%extaerlw4,grid%extaerlw5, & + grid%extaerlw6,grid%extaerlw7,grid%extaerlw8,grid%extaerlw9,grid%extaerlw10, & + grid%extaerlw11,grid%extaerlw12,grid%extaerlw13,grid%extaerlw14,grid%extaerlw15, & + grid%extaerlw16, & + grid%tauaerlw1,grid%tauaerlw2,grid%tauaerlw3,grid%tauaerlw4,grid%tauaerlw5, & + grid%tauaerlw6,grid%tauaerlw7,grid%tauaerlw8,grid%tauaerlw9,grid%tauaerlw10, & + grid%tauaerlw11,grid%tauaerlw12,grid%tauaerlw13,grid%tauaerlw14,grid%tauaerlw15, & + grid%tauaerlw16, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte) @@ -942,6 +981,12 @@ subroutine chem_driver ( grid , config_flags & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts, kte, & config_flags%kemit, & + grid%ph_macr,grid%ph_o31d,grid%ph_o33p,grid%ph_no2,grid%ph_no3o2, & + grid%ph_no3o,grid%ph_hno2,grid%ph_hno3,grid%ph_hno4,grid%ph_h2o2, & + grid%ph_ch2or,grid%ph_ch2om,grid%ph_ch3cho,grid%ph_ch3coch3, & + grid%ph_ch3coc2h5,grid%ph_hcocho,grid%ph_ch3cocho, & + grid%ph_hcochest,grid%ph_ch3o2h,grid%ph_ch3coo2h, & + grid%ph_ch3ono2,grid%ph_hcochob,grid%ph_n2o5,grid%ph_o2 & ) end if #endif @@ -1072,7 +1117,18 @@ subroutine chem_driver ( grid , config_flags & ! #ifdef WRF_KPP + + do k=kts,kte + do i=its,ite + do j=jts,jte + chem(i,k,j,p_psd1)=0.0 + chem(i,k,j,p_psd2)=0.0 + enddo + enddo + enddo + CALL wrf_debug(15,'calling kpp_mechanism_driver') + CALL kpp_mechanism_driver (chem, & grid%id,dtstepc,config_flags, & p_phy,t_phy,rho, & @@ -1100,6 +1156,7 @@ subroutine chem_driver ( grid , config_flags & chem(its:ite,kts:kte,jts:jte,p_so2)=vcso2_old(its:ite,kts:kte,jts:jte) ! chem(its:ite,kts:kte,jts:jte,p_h2o2)=vch2o2_old(its:ite,kts:kte,jts:jte) endif + so2so4_select: SELECT CASE(config_flags%chem_opt) CASE (RADM2SORG,RADM2SORG_KPP,RACMSORG_KPP) CALL wrf_debug(15,'gocart so2-so4 conversion') @@ -1199,7 +1256,7 @@ subroutine chem_driver ( grid , config_flags & rri,t_phy,moist,grid%aerwrf,p8w,t8w, & #endif p_phy,chem,rho,dz8w, & - zmid,z_at_w, & + zmid,z_at_w,grid%vbs_nbin, & grid%h2oaj,grid%h2oai,grid%nu3,grid%ac3,grid%cor3,grid%asulf, & grid%ahno3,grid%anh3,grid%cvaro1,grid%cvaro2,grid%cvalk1,grid%cvole1, & grid%cvapi1,grid%cvapi2,grid%cvlim1,grid%cvlim2,vcsulf_old, & @@ -1277,9 +1334,20 @@ subroutine chem_driver ( grid , config_flags & call sum_pm_driver ( config_flags, & rri, chem, grid%h2oaj, grid%h2oai, & grid%pm2_5_dry, grid%pm2_5_water, grid%pm2_5_dry_ec, grid%pm10, & - ids,ide, jds,jde, kds,kde, & - ims,ime, jms,jme, kms,kme, & - its,ite, jts,jte, kts,kte ) + grid% hoa_a01,grid%hoa_a02,grid%hoa_a03,grid%hoa_a04, & + grid%bboa_a01,grid%bboa_a02,grid%bboa_a03,grid%bboa_a04, & + grid%soa_a01,grid%soa_a02,grid%soa_a03,grid%soa_a04, & + grid%bbsoa_a01,grid%bbsoa_a02,grid%bbsoa_a03,grid%bbsoa_a04, & + grid%hsoa_a01,grid%hsoa_a02,grid%hsoa_a03,grid%hsoa_a04, & + grid%biog_a01,grid%biog_a02,grid%biog_a03,grid%biog_a04, & + grid%arosoa_a01,grid%arosoa_a02,grid%arosoa_a03,grid%arosoa_a04, & + grid%totoa_a01,grid%totoa_a02,grid%totoa_a03,grid%totoa_a04, & + grid%hsoa_c,grid%hsoa_o,grid%bbsoa_c,grid%bbsoa_o, & + grid%biog_v1,grid%biog_v2,grid%biog_v3,grid%biog_v4, & + grid%ant_v1,grid%ant_v2,grid%ant_v3,grid%ant_v4, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) ! Fill top level to prevent spurious interpolation results (no extrapolation) do nv=1,num_chem diff --git a/chem/chemics_init.F b/chem/chemics_init.F index 95ab58fdb0..dfa23ccd3a 100755 --- a/chem/chemics_init.F +++ b/chem/chemics_init.F @@ -10,6 +10,14 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, gaer1,gaer2,gaer3,gaer4, & waer1,waer2,waer3,waer4, & l2aer,l3aer,l4aer,l5aer,l6aer,l7aer, & + extaerlw1,extaerlw2,extaerlw3,extaerlw4, & + extaerlw5,extaerlw6,extaerlw7,extaerlw8, & + extaerlw9,extaerlw10,extaerlw11,extaerlw12, & + extaerlw13,extaerlw14,extaerlw15,extaerlw16, & + tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4, & + tauaerlw5,tauaerlw6,tauaerlw7,tauaerlw8, & + tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16, & pm2_5_dry,pm2_5_water,pm2_5_dry_ec, & last_chem_time_year, last_chem_time_month, & last_chem_time_day, last_chem_time_hour, & @@ -60,6 +68,14 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, INTENT(INOUT ) :: & pm2_5_dry,pm2_5_water,pm2_5_dry_ec, & tauaer1,tauaer2,tauaer3,tauaer4, & + extaerlw1,extaerlw2,extaerlw3,extaerlw4, & + extaerlw5,extaerlw6,extaerlw7,extaerlw8, & + extaerlw9,extaerlw10,extaerlw11,extaerlw12, & + extaerlw13,extaerlw14,extaerlw15,extaerlw16, & + tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4, & + tauaerlw5,tauaerlw6,tauaerlw7,tauaerlw8, & + tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16, & gd_cloud, gd_cloud2, & gd_cloud_a, gd_cloud2_a, & gd_cloud_b, gd_cloud2_b, & @@ -139,6 +155,13 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, CALL wrf_debug(15,'calling NMHC9 from chem_driver') call wrf_message("WARNING: NMHC9 chemistry option is highly experimental and not recommended for use.") call wrf_error_fatal("ERROR: experimental option selected, please contact wrfchemhelp for assistance") + CASE (SAPRC99_KPP ) + CALL wrf_debug(15,'calling SAPRC99 from chem_driver') + call wrf_message("WARNING: SAPRC99 chemistry option is highly experimental and not recommended for use.") + CASE (SAPRC99_MOSAIC_4BIN_VBS2_KPP ) + CALL wrf_debug(15,'calling SAPRC99_MOSAIC_4BIN_VBS2_4BIN from chem_driver') + call wrf_message("WARNING: SAPRC99_MOSAIC_4BIN_VBS2_4BIN chemistry option is highly experimental and not recommended for use.") + call wrf_error_fatal("WARNING: SAPRC99_MOSAIC_4BIN_VBS2_4BIN chemistry option is useable but does not fully pass regtesting. It is recommended that you contact Jerome.Fast@pnl.gov for information regarding this option.") CASE (RADM2SORG_AQ ) CALL wrf_debug(15,'calling RADM2/MADE/SORGAM with AQ chemistry from chem_driver') call wrf_message("WARNING: RADM2SORG_AQ chemistry option is experimental and not yet fully tested.") @@ -172,8 +195,8 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, if ( config_flags%chem_opt >= 13 .OR. config_flags%chem_opt <= 8) then call wrf_error_fatal("ERROR: wet scavaging option requires chem_opt = 9 through 12 to function.") endif - if ( config_flags%mp_physics /= 2 ) then - call wrf_error_fatal("ERROR: wet scavaging option requires mp_phys = 2 (Lin et al.) to function.") + if ( config_flags%mp_physics /= 2 .and. config_flags%mp_physics /= 10) then + call wrf_error_fatal("ERROR: wet scavaging option requires mp_phys = 2 (Lin et al.) or 10 (Morrison) to function.") endif endif @@ -181,11 +204,18 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, if ( config_flags%chem_opt >= 13 .OR. config_flags%chem_opt <= 8) then call wrf_error_fatal("ERROR: cloud chemistry option requires chem_opt = 9 through 12 to function.") endif - if ( config_flags%mp_physics /= 2 ) then - call wrf_error_fatal("ERROR: cloud chemistry option requires mp_phys = 2 (Lin et al.) to function.") + if ( config_flags%mp_physics /= 2 .and. config_flags%mp_physics /= 10 ) then + call wrf_error_fatal("ERROR: cloud chemistry option requires mp_phys = 2 (Lin et al.) or 10 (Morrison) to function.") endif endif + if ( config_flags%chem_opt > 0 .and. config_flags%chem_conv_tr == 1 ) then + if ( config_flags%cu_physics /= 5 ) then +! call wrf_error_fatal("ERROR: chem_conv_tr=1 requires cu_physics=5") + call wrf_message("ERROR: chem_conv_tr=1 requires cu_physics=5") + end if + end if + IF ( config_flags%chem_opt == 0 .AND. config_flags%aer_ra_feedback .NE. 0 ) THEN ! config_flags%aer_ra_feedback = 0 call wrf_error_fatal(" ERROR: CHEM_INIT: FOR CHEM_OPT = 0, AER_RA_FEEDBACK MUST = 0 ") @@ -243,6 +273,38 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, l7aer(i,k,j,2) = 0. l7aer(i,k,j,3) = 0. l7aer(i,k,j,4) = 0. + extaerlw1(i,k,j) = 0. + extaerlw2(i,k,j) = 0. + extaerlw3(i,k,j) = 0. + extaerlw4(i,k,j) = 0. + extaerlw5(i,k,j) = 0. + extaerlw6(i,k,j) = 0. + extaerlw7(i,k,j) = 0. + extaerlw8(i,k,j) = 0. + extaerlw9(i,k,j) = 0. + extaerlw10(i,k,j) = 0. + extaerlw11(i,k,j) = 0. + extaerlw12(i,k,j) = 0. + extaerlw13(i,k,j) = 0. + extaerlw14(i,k,j) = 0. + extaerlw15(i,k,j) = 0. + extaerlw16(i,k,j) = 0. + tauaerlw1(i,k,j) = 0. + tauaerlw2(i,k,j) = 0. + tauaerlw3(i,k,j) = 0. + tauaerlw4(i,k,j) = 0. + tauaerlw5(i,k,j) = 0. + tauaerlw6(i,k,j) = 0. + tauaerlw7(i,k,j) = 0. + tauaerlw8(i,k,j) = 0. + tauaerlw9(i,k,j) = 0. + tauaerlw10(i,k,j) = 0. + tauaerlw11(i,k,j) = 0. + tauaerlw12(i,k,j) = 0. + tauaerlw13(i,k,j) = 0. + tauaerlw14(i,k,j) = 0. + tauaerlw15(i,k,j) = 0. + tauaerlw16(i,k,j) = 0. end do end do end do @@ -360,7 +422,7 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, enddo enddo endif - CASE (RADM2_KPP,RADM2SORG_KPP,GOCARTRADM2,GOCARTRADM2_KPP) + CASE (RADM2_KPP,RADM2SORG_KPP,GOCARTRADM2,GOCARTRADM2_KPP,SAPRC99_KPP) if(config_flags%chem_in_opt == 0 )then do j=jts,jte do k=kts,kte @@ -381,8 +443,139 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, enddo enddo endif + + + CASE (CBMZ_MOSAIC_KPP) + if(config_flags%chem_in_opt == 0 )then + do j=jts,jte + do k=kts,kte + do i=its,ite + chem(i,k,j,p_ch4)=1.7 + chem(i,k,j,p_aro1)=0.0 + chem(i,k,j,p_aro2)=0.0 + chem(i,k,j,p_alk1)=0.0 + chem(i,k,j,p_ole1)=0.0 + chem(i,k,j,p_api1)=0.0 + chem(i,k,j,p_api2)=0.0 + chem(i,k,j,p_lim1)=0.0 + chem(i,k,j,p_lim2)=0.0 + chem(i,k,j,p_api)=0.0 + chem(i,k,j,p_lim)=0.0 + enddo + enddo + enddo + endif + + + + + CASE (SAPRC99_MOSAIC_4BIN_VBS2_KPP) + if(config_flags%chem_in_opt == 0 )then + grid%vbs_nbin=2 + do j=jts,jte + do k=kts,kte + do i=its,ite + chem(i,k,j,p_co2)=370. + chem(i,k,j,p_ch4)=1.7 + if (p_pcg1_b_c.gt.1) chem(i,k,j,p_pcg1_b_c)=0.00 + if (p_pcg2_b_c.gt.1) chem(i,k,j,p_pcg2_b_c)=0.00 + if (p_pcg3_b_c.gt.1) chem(i,k,j,p_pcg3_b_c)=0.00 + if (p_pcg4_b_c.gt.1) chem(i,k,j,p_pcg4_b_c)=0.00 + if (p_pcg5_b_c.gt.1) chem(i,k,j,p_pcg5_b_c)=0.00 + if (p_pcg6_b_c.gt.1) chem(i,k,j,p_pcg6_b_c)=0.00 + if (p_pcg7_b_c.gt.1) chem(i,k,j,p_pcg7_b_c)=0.00 + if (p_pcg8_b_c.gt.1) chem(i,k,j,p_pcg8_b_c)=0.00 + if (p_pcg9_b_c.gt.1) chem(i,k,j,p_pcg9_b_c)=0.00 + if (p_pcg1_b_o.gt.1) chem(i,k,j,p_pcg1_b_o)=0.00 + if (p_pcg2_b_o.gt.1) chem(i,k,j,p_pcg2_b_o)=0.00 + if (p_pcg3_b_o.gt.1) chem(i,k,j,p_pcg3_b_o)=0.00 + if (p_pcg4_b_o.gt.1) chem(i,k,j,p_pcg4_b_o)=0.00 + if (p_pcg5_b_o.gt.1) chem(i,k,j,p_pcg5_b_o)=0.00 + if (p_pcg6_b_o.gt.1) chem(i,k,j,p_pcg6_b_o)=0.00 + if (p_pcg7_b_o.gt.1) chem(i,k,j,p_pcg7_b_o)=0.00 + if (p_pcg8_b_o.gt.1) chem(i,k,j,p_pcg8_b_o)=0.00 + if (p_pcg9_b_o.gt.1) chem(i,k,j,p_pcg9_b_o)=0.00 + if (p_opcg1_b_c.gt.1) chem(i,k,j,p_opcg1_b_c)=0.00 + if (p_opcg2_b_c.gt.1) chem(i,k,j,p_opcg2_b_c)=0.00 + if (p_opcg3_b_c.gt.1) chem(i,k,j,p_opcg3_b_c)=0.00 + if (p_opcg4_b_c.gt.1) chem(i,k,j,p_opcg4_b_c)=0.00 + if (p_opcg5_b_c.gt.1) chem(i,k,j,p_opcg5_b_c)=0.00 + if (p_opcg6_b_c.gt.1) chem(i,k,j,p_opcg6_b_c)=0.00 + if (p_opcg7_b_c.gt.1) chem(i,k,j,p_opcg7_b_c)=0.00 + if (p_opcg8_b_c.gt.1) chem(i,k,j,p_opcg8_b_c)=0.00 + if (p_opcg1_b_o.gt.1) chem(i,k,j,p_opcg1_b_o)=0.00 + if (p_opcg2_b_o.gt.1) chem(i,k,j,p_opcg2_b_o)=0.00 + if (p_opcg3_b_o.gt.1) chem(i,k,j,p_opcg3_b_o)=0.00 + if (p_opcg4_b_o.gt.1) chem(i,k,j,p_opcg4_b_o)=0.00 + if (p_opcg5_b_o.gt.1) chem(i,k,j,p_opcg5_b_o)=0.00 + if (p_opcg6_b_o.gt.1) chem(i,k,j,p_opcg6_b_o)=0.00 + if (p_opcg7_b_o.gt.1) chem(i,k,j,p_opcg7_b_o)=0.00 + if (p_opcg8_b_o.gt.1) chem(i,k,j,p_opcg8_b_o)=0.00 + if (p_pcg1_f_c.gt.1) chem(i,k,j,p_pcg1_f_c)=0.00 + if (p_pcg2_f_c.gt.1) chem(i,k,j,p_pcg2_f_c)=0.00 + if (p_pcg3_f_c.gt.1) chem(i,k,j,p_pcg3_f_c)=0.00 + if (p_pcg4_f_c.gt.1) chem(i,k,j,p_pcg4_f_c)=0.00 + if (p_pcg5_f_c.gt.1) chem(i,k,j,p_pcg5_f_c)=0.00 + if (p_pcg6_f_c.gt.1) chem(i,k,j,p_pcg6_f_c)=0.00 + if (p_pcg7_f_c.gt.1) chem(i,k,j,p_pcg7_f_c)=0.00 + if (p_pcg8_f_c.gt.1) chem(i,k,j,p_pcg8_f_c)=0.00 + if (p_pcg9_f_c.gt.1) chem(i,k,j,p_pcg9_f_c)=0.00 + if (p_pcg1_f_o.gt.1) chem(i,k,j,p_pcg1_f_o)=0.00 + if (p_pcg2_f_o.gt.1) chem(i,k,j,p_pcg2_f_o)=0.00 + if (p_pcg3_f_o.gt.1) chem(i,k,j,p_pcg3_f_o)=0.00 + if (p_pcg4_f_o.gt.1) chem(i,k,j,p_pcg4_f_o)=0.00 + if (p_pcg5_f_o.gt.1) chem(i,k,j,p_pcg5_f_o)=0.00 + if (p_pcg6_f_o.gt.1) chem(i,k,j,p_pcg6_f_o)=0.00 + if (p_pcg7_f_o.gt.1) chem(i,k,j,p_pcg7_f_o)=0.00 + if (p_pcg8_f_o.gt.1) chem(i,k,j,p_pcg8_f_o)=0.00 + if (p_pcg9_f_o.gt.1) chem(i,k,j,p_pcg9_f_o)=0.00 + if (p_opcg1_f_c.gt.1) chem(i,k,j,p_opcg1_f_c)=0.00 + if (p_opcg2_f_c.gt.1) chem(i,k,j,p_opcg2_f_c)=0.00 + if (p_opcg3_f_c.gt.1) chem(i,k,j,p_opcg3_f_c)=0.00 + if (p_opcg4_f_c.gt.1) chem(i,k,j,p_opcg4_f_c)=0.00 + if (p_opcg5_f_c.gt.1) chem(i,k,j,p_opcg5_f_c)=0.00 + if (p_opcg6_f_c.gt.1) chem(i,k,j,p_opcg6_f_c)=0.00 + if (p_opcg7_f_c.gt.1) chem(i,k,j,p_opcg7_f_c)=0.00 + if (p_opcg8_f_c.gt.1) chem(i,k,j,p_opcg8_f_c)=0.00 + if (p_opcg1_f_o.gt.1) chem(i,k,j,p_opcg1_f_o)=0.00 + if (p_opcg2_f_o.gt.1) chem(i,k,j,p_opcg2_f_o)=0.00 + if (p_opcg3_f_o.gt.1) chem(i,k,j,p_opcg3_f_o)=0.00 + if (p_opcg4_f_o.gt.1) chem(i,k,j,p_opcg4_f_o)=0.00 + if (p_opcg5_f_o.gt.1) chem(i,k,j,p_opcg5_f_o)=0.00 + if (p_opcg6_f_o.gt.1) chem(i,k,j,p_opcg6_f_o)=0.00 + if (p_opcg7_f_o.gt.1) chem(i,k,j,p_opcg7_f_o)=0.00 + if (p_opcg8_f_o.gt.1) chem(i,k,j,p_opcg8_f_o)=0.00 + if (p_ant1_c.gt.1) chem(i,k,j,p_ant1_c)=0.0 + if (p_ant2_c.gt.1) chem(i,k,j,p_ant2_c)=0.0 + if (p_ant3_c.gt.1) chem(i,k,j,p_ant3_c)=0.0 + if (p_ant4_c.gt.1) chem(i,k,j,p_ant4_c)=0.0 + if (p_ant1_o.gt.1) chem(i,k,j,p_ant1_o)=0.0 + if (p_ant2_o.gt.1) chem(i,k,j,p_ant2_o)=0.0 + if (p_ant3_o.gt.1) chem(i,k,j,p_ant3_o)=0.0 + if (p_ant4_o.gt.1) chem(i,k,j,p_ant4_o)=0.0 + if (p_biog1_c.gt.1) chem(i,k,j,p_biog1_c)=0.0 + if (p_biog2_c.gt.1) chem(i,k,j,p_biog2_c)=0.0 + if (p_biog3_c.gt.1) chem(i,k,j,p_biog3_c)=0.0 + if (p_biog4_c.gt.1) chem(i,k,j,p_biog4_c)=0.0 + if (p_biog1_o.gt.1) chem(i,k,j,p_biog1_o)=0.0 + if (p_biog2_o.gt.1) chem(i,k,j,p_biog2_o)=0.0 + if (p_biog3_o.gt.1) chem(i,k,j,p_biog3_o)=0.0 + if (p_biog4_o.gt.1) chem(i,k,j,p_biog4_o)=0.0 + + + + enddo + enddo + enddo + endif + + + + + END SELECT kpp_select endif + aer_select: SELECT CASE(config_flags%chem_opt) CASE (RACMPM_KPP) if(config_flags%chem_in_opt == 0 )then @@ -501,7 +694,7 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, CALL wrf_debug(15,'MOZCART dust initialization') ch_dust(:,:) = 0.8e-9_8 - CASE (RADM2SORG, RADM2SORG_AQ, RACMSORG_AQ, RADM2SORG_KPP, RACMSORG_KPP,RACM_ESRLSORG_KPP) + CASE (RADM2SORG, RADM2SORG_AQ, RACMSORG_AQ, RADM2SORG_KPP, RACMSORG_KPP, RACM_ESRLSORG_KPP, CBMZSORG, CBMZSORG_AQ) CALL wrf_debug(15,'call MADE/SORGAM aerosols initialization') call aerosols_sorgam_init(chem,convfac,z_at_w, & @@ -528,7 +721,9 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, chem(its:ite,kts:min(kte,kde-1),jts:jte,:)=max(chem(its:ite,kts:min(kte,kde-1),jts:jte,:),epsilc) - CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, & + SAPRC99_MOSAIC_4BIN_VBS2_KPP ) call wrf_debug(15,'call MOSAIC aerosols initialization') call init_data_mosaic_asect(is_aerosol) if(config_flags%chem_in_opt == 0 )then @@ -574,8 +769,10 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, ! initialization for cbmz gas-phase chemistry ! cbmz_select: SELECT CASE(config_flags%chem_opt) - CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP,CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_4BIN, & + CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, CBMZSORG,CBMZSORG_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, & + CBMZ_MOSAIC_DMS_8BIN_AQ) CALL wrf_debug(15,'initializing cbmz gas-phase chemistry') if(config_flags%chem_in_opt == 0 )then if( .NOT. config_flags%restart ) & @@ -818,7 +1015,7 @@ subroutine print_chem_species_index( chem_opt ) print*,p_ch3so2oo,"ch3so2oo" print*,p_ch3so2ch2oo,"ch3so2ch2oo" print*,p_mtf,"mtf" - case (CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + case (CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, CBMZSORG,CBMZSORG_AQ) print*,p_so2,"so2" print*,p_sulf,"sulf" print*,p_no2,"no2" @@ -881,12 +1078,173 @@ subroutine print_chem_species_index( chem_opt ) print*,p_isopp,"isopp" print*,p_isopn,"isopn" print*,p_isopo2,"isopo2" + + case (CBMZ_MOSAIC_KPP) + print*,p_so2,"so2" + print*,p_sulf,"sulf" + print*,p_no2,"no2" + print*,p_no,"no" + print*,p_o3,"o3" + print*,p_hno3,"hno3" + print*,p_h2o2,"h2o2" + print*,p_ald,"ald" + print*,p_hcho,"hcho" + print*,p_op1,"op1" + print*,p_op2,"op2" + print*,p_paa,"paa" + print*,p_ora1,"ora1" + print*,p_ora2,"ora2" + print*,p_nh3,"nh3" + print*,p_n2o5,"n2o5" + print*,p_no3,"no3" + print*,p_pan,"pan" + print*,p_hc3,"hc3" + print*,p_hc5,"hc5" + print*,p_hc8,"hc8" + print*,p_eth,"eth" + print*,p_ch4,"ch4" + print*,p_co,"co" + print*,p_ol2,"ol2" + print*,p_olt,"olt" + print*,p_oli,"oli" + print*,p_tol,"tol" + print*,p_xyl,"xyl" + print*,p_aco3,"aco3" + print*,p_tpan,"tpan" + print*,p_hono,"hono" + print*,p_hno4,"hno4" + print*,p_ket,"ket" + print*,p_gly,"gly" + print*,p_mgly,"mgly" + print*,p_dcb,"dcb" + print*,p_onit,"onit" + print*,p_csl,"csl" + print*,p_iso,"iso" + print*,p_ho,"ho" + print*,p_ho2,"ho2" + print*,p_hcl,"hcl" + print*,p_ch3o2,"ch3o2" + print*,p_ethp,"ethp" + print*,p_ch3oh,"ch3oh" + print*,p_c2h5oh,"c2h5oh" + print*,p_par,"par" + print*,p_to2,"to2" + print*,p_cro,"cro" + print*,p_open,"open" + print*,p_op3,"op3" + print*,p_c2o3,"c2o3" + print*,p_ro2,"ro2" + print*,p_ano2,"ano2" + print*,p_nap,"nap" + print*,p_xo2,"xo2" + print*,p_xpar,"xpar" + print*,p_isoprd,"isoprd" + print*,p_isopp,"isopp" + print*,p_isopn,"isopn" + print*,p_isopo2,"isopo2" + print*,p_aro1,"aro1" + print*,p_aro2,"aro2" + print*,p_alk1,"alk1" + print*,p_ole1,"ole1" + print*,p_api1,"api1" + print*,p_api2,"api2" + print*,p_lim1,"lim1" + print*,p_lim2,"lim2" + print*,p_api,"api" + print*,p_lim,"lim" + + case (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) + print*,p_o3,"o3" + print*,p_h2o2,"h2o2" + print*,p_no,"no" + print*,p_no2,"no2" + print*,p_no3,"no3" + print*,p_n2o5,"n2o5" + print*,p_hono,"hono" + print*,p_hno3,"hno3" + print*,p_hno4,"hno4" + print*,p_so2,"so2" + print*,p_h2so4,"h2so4" + print*,p_co,"co" + print*,p_hcho,"hcho" + print*,p_ccho,"ccho" + print*,p_rcho,"rcho" + print*,p_acet,"acet" + print*,p_mek,"mek" + print*,p_hcooh,"hcooh" + print*,p_meoh,"meoh" + print*,p_etoh,"etoh" + print*,p_cco_oh,"cco_oh" + print*,p_rco_oh,"rco_oh" + print*,p_gly,"gly" + print*,p_mgly,"mgly" + print*,p_bacl,"bacl" + print*,p_cres,"cres" + print*,p_bald,"bald" + print*,p_isoprod,"isoprod" + print*,p_methacro,"methacro" + print*,p_mvk,"mvk" + print*,p_prod2,"prod2" + print*,p_dcb1,"dcb1" + print*,p_dcb2,"dcb2" + print*,p_dcb3,"dcb3" + print*,p_ethene,"ethene" + print*,p_isoprene,"isoprene" + print*,p_c2h6,"c2h6" + print*,p_c3h8,"c3h8" + print*,p_c2h2,"c2h2" + print*,p_c3h6,"c3h6" + print*,p_alk3,"alk3" + print*,p_alk4,"alk4" + print*,p_alk5,"alk5" + print*,p_aro1,"aro1" + print*,p_aro2,"aro2" + print*,p_ole1,"ole1" + print*,p_ole2,"ole2" + print*,p_terp,"terp" + print*,p_sesq,"sesq" + print*,p_rno3,"rno3" + print*,p_nphe,"nphe" + print*,p_phen,"phen" + print*,p_pan,"pan" + print*,p_pan2,"pan2" + print*,p_pbzn,"pbzn" + print*,p_ma_pan,"ma_pan" + print*,p_bc_spr,"bc_spr" + print*,p_oc_spr,"oc_spr" + print*,p_ssf,"ssf" + print*,p_ssc,"ssc" + print*,p_pm10_spr,"pm10_spr" + print*,p_pm25_spr,"pm25_spr" + print*,p_dms,"dms" + print*,p_dst1,"dst1" + print*,p_dst2,"dst2" + print*,p_dst3,"dst3" + print*,p_co2,"co2" + print*,p_cco_ooh,"cco_ooh" + print*,p_rco_o2,"rco_o2" + print*,p_rco_ooh,"rco_ooh" + print*,p_xn,"xn" + print*,p_xc,"xc" + print*,p_ho,"oh" + print*,p_ho2,"ho2" + print*,p_c_o2,"c_o2" + print*,p_cooh,"cooh" + print*,p_rooh,"rooh" + print*,p_ro2_r,"ro2_r" + print*,p_r2o2,"r2o2" + print*,p_ro2_n,"ro2_n" + print*,p_cco_o2,"cco_o2" + print*,p_bzco_o2,"bzco_o2" + print*,p_ma_rco3,"ma_rco3" + print*,p_ch4,"ch4" + end select ! ! Aerosol species... ! select case (chem_opt) - case (RADM2SORG, RADM2SORG_AQ, RADM2SORG_KPP, RACMSORG, RACMSORG_AQ, RACMSORG_KPP,RACM_ESRLSORG_KPP) + case (RADM2SORG, RADM2SORG_AQ, RADM2SORG_KPP, RACMSORG_AQ, RACMSORG_KPP,RACM_ESRLSORG_KPP, CBMZSORG, CBMZSORG_AQ) print*,p_so4aj,"so4aj" print*,p_so4ai,"so4ai" print*,p_nh4aj,"nh4aj" @@ -1055,6 +1413,176 @@ subroutine print_chem_species_index( chem_opt ) print*,p_hysw_a08,"hysw_a08" print*,p_water_a08,"water_a08" print*,p_num_a08,"num_a08" + case (CBMZ_MOSAIC_KPP) + print*,p_so4_a01,"so4_a01" + print*,p_no3_a01,"no3_a01" + print*,p_cl_a01,"cl_a01" + print*,p_nh4_a01,"nh4_a01" + print*,p_na_a01,"na_a01" + print*,p_oin_a01,"oin_a01" + print*,p_oc_a01,"oc_a01" + print*,p_bc_a01,"bc_a01" + print*,p_hysw_a01,"hysw_a01" + print*,p_water_a01,"water_a01" + print*,p_num_a01,"num_a01" + print*,p_aro1_a01,"aro1_a01" + print*,p_aro2_a01,"aro2_a01" + print*,p_alk1_a01,"alk1_a01" + print*,p_ole1_a01,"ole1_a01" + print*,p_api1_a01,"api1_a01" + print*,p_api2_a01,"api2_a01" + print*,p_lim1_a01,"lim1_a01" + print*,p_lim2_a01,"lim2_a01" + print*,p_so4_a02,"so4_a02" + print*,p_no3_a02,"no3_a02" + print*,p_cl_a02,"cl_a02" + print*,p_nh4_a02,"nh4_a02" + print*,p_na_a02,"na_a02" + print*,p_oin_a02,"oin_a02" + print*,p_oc_a02,"oc_a02" + print*,p_bc_a02,"bc_a02" + print*,p_hysw_a02,"hysw_a02" + print*,p_water_a02,"water_a02" + print*,p_num_a02,"num_a02" + print*,p_aro1_a02,"aro1_a02" + print*,p_aro2_a02,"aro2_a02" + print*,p_alk1_a02,"alk1_a02" + print*,p_ole1_a02,"ole1_a02" + print*,p_api1_a02,"api1_a02" + print*,p_api2_a02,"api2_a02" + print*,p_lim1_a02,"lim1_a02" + print*,p_lim2_a02,"lim2_a02" + print*,p_so4_a03,"so4_a03" + print*,p_no3_a03,"no3_a03" + print*,p_cl_a03,"cl_a03" + print*,p_nh4_a03,"nh4_a03" + print*,p_na_a03,"na_a03" + print*,p_oin_a03,"oin_a03" + print*,p_oc_a03,"oc_a03" + print*,p_bc_a03,"bc_a03" + print*,p_hysw_a03,"hysw_a03" + print*,p_water_a03,"water_a03" + print*,p_num_a03,"num_a03" + print*,p_aro1_a03,"aro1_a03" + print*,p_aro2_a03,"aro2_a03" + print*,p_alk1_a03,"alk1_a03" + print*,p_ole1_a03,"ole1_a03" + print*,p_api1_a03,"api1_a03" + print*,p_api2_a03,"api2_a03" + print*,p_lim1_a03,"lim1_a03" + print*,p_lim2_a03,"lim2_a03" + print*,p_so4_a04,"so4_a04" + print*,p_no3_a04,"no3_a04" + print*,p_cl_a04,"cl_a04" + print*,p_nh4_a04,"nh4_a04" + print*,p_na_a04,"na_a04" + print*,p_oin_a04,"oin_a04" + print*,p_oc_a04,"oc_a04" + print*,p_bc_a04,"bc_a04" + print*,p_hysw_a04,"hysw_a04" + print*,p_water_a04,"water_a04" + print*,p_num_a04,"num_a04" + print*,p_aro1_a04,"aro1_a04" + print*,p_aro2_a04,"aro2_a04" + print*,p_alk1_a04,"alk1_a04" + print*,p_ole1_a04,"ole1_a04" + print*,p_api1_a04,"api1_a04" + print*,p_api2_a04,"api2_a04" + print*,p_lim1_a04,"lim1_a04" + print*,p_lim2_a04,"lim2_a04" + print*,p_so4_a05,"so4_a05" + print*,p_no3_a05,"no3_a05" + print*,p_cl_a05,"cl_a05" + print*,p_nh4_a05,"nh4_a05" + print*,p_na_a05,"na_a05" + print*,p_oin_a05,"oin_a05" + print*,p_oc_a05,"oc_a05" + print*,p_bc_a05,"bc_a05" + print*,p_hysw_a05,"hysw_a05" + print*,p_water_a05,"water_a05" + print*,p_num_a05,"num_a05" + print*,p_aro1_a05,"aro1_a05" + print*,p_aro2_a05,"aro2_a05" + print*,p_alk1_a05,"alk1_a05" + print*,p_ole1_a05,"ole1_a05" + print*,p_api1_a05,"api1_a05" + print*,p_api2_a05,"api2_a05" + print*,p_lim1_a05,"lim1_a05" + print*,p_lim2_a05,"lim2_a05" + print*,p_so4_a06,"so4_a06" + print*,p_no3_a06,"no3_a06" + print*,p_cl_a06,"cl_a06" + print*,p_nh4_a06,"nh4_a06" + print*,p_na_a06,"na_a06" + print*,p_oin_a06,"oin_a06" + print*,p_oc_a06,"oc_a06" + print*,p_bc_a06,"bc_a06" + print*,p_hysw_a06,"hysw_a06" + print*,p_water_a06,"water_a06" + print*,p_num_a06,"num_a06" + print*,p_aro1_a06,"aro1_a06" + print*,p_aro2_a06,"aro2_a06" + print*,p_alk1_a06,"alk1_a06" + print*,p_ole1_a06,"ole1_a06" + print*,p_api1_a06,"api1_a06" + print*,p_api2_a06,"api2_a06" + print*,p_lim1_a06,"lim1_a06" + print*,p_lim2_a06,"lim2_a06" + print*,p_so4_a07,"so4_a07" + print*,p_no3_a07,"no3_a07" + print*,p_cl_a07,"cl_a07" + print*,p_nh4_a07,"nh4_a07" + print*,p_na_a07,"na_a07" + print*,p_oin_a07,"oin_a07" + print*,p_oc_a07,"oc_a07" + print*,p_bc_a07,"bc_a07" + print*,p_hysw_a07,"hysw_a07" + print*,p_water_a07,"water_a07" + print*,p_num_a07,"num_a07" + print*,p_aro1_a07,"aro1_a07" + print*,p_aro2_a07,"aro2_a07" + print*,p_alk1_a07,"alk1_a07" + print*,p_ole1_a07,"ole1_a07" + print*,p_api1_a07,"api1_a07" + print*,p_api2_a07,"api2_a07" + print*,p_lim1_a07,"lim1_a07" + print*,p_lim2_a07,"lim2_a07" + print*,p_so4_a08,"so4_a08" + print*,p_no3_a08,"no3_a08" + print*,p_cl_a08,"cl_a08" + print*,p_nh4_a08,"nh4_a08" + print*,p_na_a08,"na_a08" + print*,p_oin_a08,"oin_a08" + print*,p_oc_a08,"oc_a08" + print*,p_bc_a08,"bc_a08" + print*,p_hysw_a08,"hysw_a08" + print*,p_water_a08,"water_a08" + print*,p_num_a08,"num_a08" + print*,p_aro1_a08,"aro1_a08" + print*,p_aro2_a08,"aro2_a08" + print*,p_alk1_a08,"alk1_a08" + print*,p_ole1_a08,"ole1_a08" + print*,p_api1_a08,"api1_a08" + print*,p_api2_a08,"api2_a08" + print*,p_lim1_a08,"lim1_a08" + print*,p_lim2_a08,"lim2_a08" + print*,p_ca_a01,"ca_a01" + print*,p_ca_a02,"ca_a02" + print*,p_ca_a03,"ca_a03" + print*,p_ca_a04,"ca_a04" + print*,p_ca_a05,"ca_a05" + print*,p_ca_a06,"ca_a06" + print*,p_ca_a07,"ca_a07" + print*,p_ca_a08,"ca_a08" + print*,p_co3_a01,"co3_a01" + print*,p_co3_a02,"co3_a02" + print*,p_co3_a03,"co3_a03" + print*,p_co3_a04,"co3_a04" + print*,p_co3_a05,"co3_a05" + print*,p_co3_a06,"co3_a06" + print*,p_co3_a07,"co3_a07" + print*,p_co3_a08,"co3_a08" + case (CBMZ_MOSAIC_4BIN_AQ) print*,p_so4_a01,"so4_a01" print*,p_no3_a01,"no3_a01" diff --git a/chem/dry_dep_driver.F b/chem/dry_dep_driver.F index 34dc6c61a4..6b58a418a5 100755 --- a/chem/dry_dep_driver.F +++ b/chem/dry_dep_driver.F @@ -51,6 +51,7 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte INTEGER, INTENT(IN ) :: ktau + integer l REAL(KIND=8), INTENT(IN ) :: curr_secs REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), & INTENT(IN ) :: moist @@ -61,6 +62,7 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_tracer ), & INTENT(INOUT ) :: tracer + INTEGER, INTENT(IN ) :: kemit REAL, DIMENSION( ims:ime, kms:kemit, jms:jme ), & INTENT(IN ) :: & @@ -315,15 +317,18 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & idrydep_onoff = 1 aer_mech_id_select: SELECT CASE(config_flags%chem_opt) - CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_KPP,RACM_ESRLSORG_KPP) + CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ) aer_mech_id = 1 CASE (RACMSORG_AQ,RACMSORG_KPP) aer_mech_id = 2 - CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, & + CBMZ_MOSAIC_8BIN_AQ,SAPRC99_MOSAIC_4BIN_VBS2_KPP, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) aer_mech_id = 3 CASE DEFAULT aer_mech_id = 0 END SELECT aer_mech_id_select + ! config_flags%aer_drydep_opt <= 0 -- aerosol depositon velocities are set to zero ! config_flags%aer_drydep_opt >= 100 -- aerosol depvels are calculated in subr aer_depvel_driver ! (see module_aer_drydep.F for details) @@ -331,15 +336,13 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & ! MOSAIC chem packages subr aerosol_depvel_2 of module_mosaic_drydep.F ! config_flags%aer_drydep_opt == 11 -- SORGAM chem packages use subr vdvg of module_aerosols_sorgam.F - if ((config_flags%aer_drydep_opt <= 0) .or. (aer_mech_id <= 0)) then CALL wrf_debug(15,'AEROSOL DRY DEP VELOCITIES = 0.0') - else if (config_flags%aer_drydep_opt <= 99) then adrydep_select: SELECT CASE(config_flags%chem_opt) - CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_KPP,RACM_ESRLSORG_KPP) + CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ) CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/RADM') call sorgam_depdriver (id,config_flags,ktau,dtstep, & ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, & @@ -363,7 +366,9 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) - CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ ) + CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, & + SAPRC99_MOSAIC_4BIN_VBS2_KPP ) CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR MOSAIC AEROSOLS') call mosaic_drydep_driver( & id, curr_secs, ktau, dtstep, config_flags, & @@ -406,7 +411,23 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & END SELECT drydep_select - +! Add dvel here for all aerosol and gas species in the dvel array +! l = max( 1, min( num_chem, numddvel ) ) +! do i=its,ite +! do j=jts,jte +! do k=1,l +! dvel(i,j,k) = ddvel(i,j,k) +! enddo +! enddo +! enddo +! +! do i=its,ite +! do j=jts,jte +! do k=l+1,numddvel +! if (l < numddvel) dvel(i,j,k) = 0.0 +! enddo +! enddo +! enddo ! This will be called later from subgrd_transport_driver.F !!!!!!!! ! @@ -435,14 +456,14 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & !!$! if e_co > 0., the grid cell should not be over water !!$! if e_co > 200, the grid cell should be over a large urban region !!$! - if (sf_urban_physics .eq. 0) then - if (e_co(i,kts,j) .gt. 0) then - ekmfull(kts:kts+10) = max(ekmfull(kts:kts+10),1.) - endif - if (e_co(i,kts,j) .gt. 200) then - ekmfull(kts:kte/2) = max(ekmfull(kts:kte/2),2.) - endif - endif +!!$ if (sf_urban_physics .eq. 0) then +!!$ if (e_co(i,kts,j) .gt. 0) then +!!$ ekmfull(kts:kts+10) = max(ekmfull(kts:kts+10),1.) +!!$ endif +!!$ if (e_co(i,kts,j) .gt. 200) then +!!$ ekmfull(kts:kte/2) = max(ekmfull(kts:kte/2),2.) +!!$ endif +!!$ endif ! do k=kts,kte zz(k)=z(i,k,j)-z_at_w(i,kts,j) @@ -467,7 +488,10 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & zzfull,zz,ddvel(i,j,nv),kts,kte) endif - +!The default case below does turbulent mixing for all gas and aerosol species +!If aqueous phase is not activated +!It requires ddvel array as a boundary condition near surface for flux of species +!The top boundary condition for eddy diffusivity is zero CASE DEFAULT call vertmx(dtstep,pblst,ekmfull,dryrho_1d, & zzfull,zz,ddvel(i,j,nv),kts,kte) diff --git a/chem/emissions_driver.F b/chem/emissions_driver.F index 327eebc134..ba9fb6af7f 100755 --- a/chem/emissions_driver.F +++ b/chem/emissions_driver.F @@ -246,7 +246,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & ! Local variables... ! INTEGER :: begday,endday,i, j, k, ksub, dust_emiss_active, seasalt_emiss_active - REAL :: conv + REAL :: conv,conv3,conv4,oconv3,oconv4 CHARACTER (LEN=80) :: message LOGICAL :: do_bioemiss, do_plumerisefire,do_ex_volcanoe @@ -263,7 +263,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & ! dust_emiss_active = 0 seasalt_emiss_active = 0 - if(config_flags%dust_opt == 2 )dust_emiss_active = 1 + if(config_flags%dust_opt >= 2 )dust_emiss_active = 1 if(config_flags%seas_opt == 2 )seasalt_emiss_active = 1 ! ! Setup the timing flags... @@ -603,8 +603,13 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & end if end if ! emiss_inpt_opt /= 3 - - CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) +!For SAPRC99 need to define SAPRC99_addemiss_anthro and SAPRC99_addemiss_bio +!so did not add saprcnov packages here + CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & + CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZSORG, CBMZSORG_AQ, CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) IF(config_flags%kemit .GT. kte-ksub) THEN message = ' EMISSIONS_DRIVER: KEMIT > KME ' CALL WRF_ERROR_FATAL (message) @@ -612,7 +617,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & call wrf_debug(15,'emissions_driver calling cbmz_addemiss_anthro') call cbmz_addemiss_anthro( id, dtstep, dz8w, config_flags, & rho_phy, chem, & - emis_ant,ids,ide, jds,jde, kds,kde, & + emis_ant,alt,ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) call wrf_debug(15,'emissions_driver calling cbmz_addemiss_bio') @@ -647,6 +652,249 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & end do end do + CASE (SAPRC99_KPP) !FIX FOR SAPRC07A + if(config_flags%emiss_opt == 13 ) then + do j=jts,jte + do i=its,ite + do k=kts,min(config_flags%kemit,kte-ksub) + conv = 4.828e-4/rho_phy(i,k,j)*dtstep/(dz8w(i,k,j)*60.) + chem(i,k,j,p_so2) = chem(i,k,j,p_so2) & + +emis_ant(i,k,j,p_e_so2)*conv + chem(i,k,j,p_c2h6) = chem(i,k,j,p_c2h6) & + +emis_ant(i,k,j,p_e_c2h6)*conv + chem(i,k,j,p_c3h8) = chem(i,k,j,p_c3h8) & + +emis_ant(i,k,j,p_e_c3h8)*conv + chem(i,k,j,p_c2h2) = chem(i,k,j,p_c2h2) & + +emis_ant(i,k,j,p_e_c2h2)*conv + chem(i,k,j,p_alk3) = chem(i,k,j,p_alk3) & + +emis_ant(i,k,j,p_e_alk3)*conv + chem(i,k,j,p_alk4) = chem(i,k,j,p_alk4) & + +emis_ant(i,k,j,p_e_alk4)*conv + chem(i,k,j,p_alk5) = chem(i,k,j,p_alk5) & + +emis_ant(i,k,j,p_e_alk5)*conv + chem(i,k,j,p_ethene) = chem(i,k,j,p_ethene) & + +emis_ant(i,k,j,p_e_ethene)*conv + chem(i,k,j,p_c3h6) = chem(i,k,j,p_c3h6) & + +emis_ant(i,k,j,p_e_c3h6)*conv + chem(i,k,j,p_ole1) = chem(i,k,j,p_ole1) & + +emis_ant(i,k,j,p_e_ole1)*conv + chem(i,k,j,p_ole2) = chem(i,k,j,p_ole2) & + +emis_ant(i,k,j,p_e_ole2)*conv + chem(i,k,j,p_aro1) = chem(i,k,j,p_aro1) & + +emis_ant(i,k,j,p_e_aro1)*conv + chem(i,k,j,p_aro2) = chem(i,k,j,p_aro2) & + +emis_ant(i,k,j,p_e_aro2)*conv + chem(i,k,j,p_hcho) = chem(i,k,j,p_hcho) & + +emis_ant(i,k,j,p_e_hcho)*conv + chem(i,k,j,p_ccho) = chem(i,k,j,p_ccho) & + +emis_ant(i,k,j,p_e_ccho)*conv + chem(i,k,j,p_rcho) = chem(i,k,j,p_rcho) & + +emis_ant(i,k,j,p_e_rcho)*conv + chem(i,k,j,p_acet) = chem(i,k,j,p_acet) & + +emis_ant(i,k,j,p_e_acet)*conv + chem(i,k,j,p_mek) = chem(i,k,j,p_mek) & + +emis_ant(i,k,j,p_e_mek)*conv + chem(i,k,j,p_isoprene) = chem(i,k,j,p_isoprene) & + +emis_ant(i,k,j,p_e_isoprene)*conv + chem(i,k,j,p_terp) = chem(i,k,j,p_terp) & + +emis_ant(i,k,j,p_e_terp)*conv + chem(i,k,j,p_sesq) = chem(i,k,j,p_sesq) & + +emis_ant(i,k,j,p_e_sesq)*conv + chem(i,k,j,p_co) = chem(i,k,j,p_co) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_no) = chem(i,k,j,p_no) & + +emis_ant(i,k,j,p_e_no)*conv + chem(i,k,j,p_no2) = chem(i,k,j,p_no2) & + +emis_ant(i,k,j,p_e_no2)*conv + chem(i,k,j,p_phen) = chem(i,k,j,p_phen) & + +emis_ant(i,k,j,p_e_phen)*conv + chem(i,k,j,p_cres) = chem(i,k,j,p_cres) & + +emis_ant(i,k,j,p_e_cres)*conv + chem(i,k,j,p_meoh) = chem(i,k,j,p_meoh) & + +emis_ant(i,k,j,p_e_meoh)*conv + chem(i,k,j,p_gly) = chem(i,k,j,p_gly) & + +emis_ant(i,k,j,p_e_gly)*conv + chem(i,k,j,p_mgly) = chem(i,k,j,p_mgly) & + +emis_ant(i,k,j,p_e_mgly)*conv + chem(i,k,j,p_bacl) = chem(i,k,j,p_bacl) & + +emis_ant(i,k,j,p_e_bacl)*conv + chem(i,k,j,p_isoprod) = chem(i,k,j,p_isoprod) & + +emis_ant(i,k,j,p_e_isoprod)*conv + chem(i,k,j,p_methacro) = chem(i,k,j,p_methacro) & + +emis_ant(i,k,j,p_e_methacro)*conv + chem(i,k,j,p_mvk) = chem(i,k,j,p_mvk) & + +emis_ant(i,k,j,p_e_mvk)*conv + chem(i,k,j,p_prod2) = chem(i,k,j,p_prod2) & + +emis_ant(i,k,j,p_e_prod2)*conv + chem(i,k,j,p_ch4) = chem(i,k,j,p_ch4) & + +emis_ant(i,k,j,p_e_ch4)*conv + chem(i,k,j,p_bald) = chem(i,k,j,p_bald) & + +emis_ant(i,k,j,p_e_bald)*conv + chem(i,k,j,p_hcooh) = chem(i,k,j,p_hcooh) & + +emis_ant(i,k,j,p_e_hcooh)*conv + chem(i,k,j,p_cco_oh) = chem(i,k,j,p_cco_oh) & + +emis_ant(i,k,j,p_e_cco_oh)*conv + chem(i,k,j,p_rco_oh) = chem(i,k,j,p_rco_oh) & + +emis_ant(i,k,j,p_e_rco_oh)*conv + + end do + end do + end do + else + do j=jts,jte + do i=its,ite + do k=kts,min(config_flags%kemit,kte-ksub) + conv = 4.828e-4/rho_phy(i,k,j)*dtstep/(dz8w(i,k,j)*60.) + chem(i,k,j,p_so2) = chem(i,k,j,p_so2) & + +emis_ant(i,k,j,p_e_so2)*conv + chem(i,k,j,p_co) = chem(i,k,j,p_co) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_no) = chem(i,k,j,p_no) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_hcho) = chem(i,k,j,p_hcho) & + +emis_ant(i,k,j,p_e_hcho)*conv + end do + end do + end do + endif + + + + CASE (SAPRC99_MOSAIC_4BIN_VBS2_KPP) !FIX FOR SAPRC07A + if(config_flags%emiss_opt == 13 ) then + do j=jts,jte + do i=its,ite + do k=kts,min(config_flags%kemit,kte-ksub) + conv = 4.828e-4/rho_phy(i,k,j)*dtstep/(dz8w(i,k,j)*60.) + conv3 = (dtstep/dz8w(i,k,j))*alt(i,k,j)*28/250*1e-3! Molecular weight of C(15)H(27)N(0.3)O(4.5) + conv4= (dtstep/dz8w(i,k,j))*alt(i,k,j)*28/226*1e-3 ! Molecular weight of C(15)H(27)N(0.3)O(0.9) + oconv3= (dtstep/dz8w(i,k,j))*alt(i,k,j)*28/283*1e-3*4.5 !For biomass there are 4.5 moles of ) /mole of C15H27N0.3 + oconv4=(dtstep/dz8w(i,k,j))*alt(i,k,j)*28/226*1e-3*0.9 !For fossil there are 0.9 moles of O per mole of C15H27N0.3 + chem(i,k,j,p_so2) = chem(i,k,j,p_so2) & + +emis_ant(i,k,j,p_e_so2)*conv + chem(i,k,j,p_c2h6) = chem(i,k,j,p_c2h6) & + +emis_ant(i,k,j,p_e_c2h6)*conv + chem(i,k,j,p_c3h8) = chem(i,k,j,p_c3h8) & + +emis_ant(i,k,j,p_e_c3h8)*conv + chem(i,k,j,p_c2h2) = chem(i,k,j,p_c2h2) & + +emis_ant(i,k,j,p_e_c2h2)*conv + chem(i,k,j,p_alk3) = chem(i,k,j,p_alk3) & + +emis_ant(i,k,j,p_e_alk3)*conv + chem(i,k,j,p_alk4) = chem(i,k,j,p_alk4) & + +emis_ant(i,k,j,p_e_alk4)*conv + chem(i,k,j,p_alk5) = chem(i,k,j,p_alk5) & + +emis_ant(i,k,j,p_e_alk5)*conv + chem(i,k,j,p_ethene) = chem(i,k,j,p_ethene) & + +emis_ant(i,k,j,p_e_ethene)*conv + chem(i,k,j,p_c3h6) = chem(i,k,j,p_c3h6) & + +emis_ant(i,k,j,p_e_c3h6)*conv + chem(i,k,j,p_ole1) = chem(i,k,j,p_ole1) & + +emis_ant(i,k,j,p_e_ole1)*conv + chem(i,k,j,p_ole2) = chem(i,k,j,p_ole2) & + +emis_ant(i,k,j,p_e_ole2)*conv + chem(i,k,j,p_aro1) = chem(i,k,j,p_aro1) & + +emis_ant(i,k,j,p_e_aro1)*conv + chem(i,k,j,p_aro2) = chem(i,k,j,p_aro2) & + +emis_ant(i,k,j,p_e_aro2)*conv + chem(i,k,j,p_hcho) = chem(i,k,j,p_hcho) & + +emis_ant(i,k,j,p_e_hcho)*conv + chem(i,k,j,p_ccho) = chem(i,k,j,p_ccho) & + +emis_ant(i,k,j,p_e_ccho)*conv + chem(i,k,j,p_rcho) = chem(i,k,j,p_rcho) & + +emis_ant(i,k,j,p_e_rcho)*conv + chem(i,k,j,p_acet) = chem(i,k,j,p_acet) & + +emis_ant(i,k,j,p_e_acet)*conv + chem(i,k,j,p_mek) = chem(i,k,j,p_mek) & + +emis_ant(i,k,j,p_e_mek)*conv + chem(i,k,j,p_isoprene) = chem(i,k,j,p_isoprene) & + +emis_ant(i,k,j,p_e_isoprene)*conv + chem(i,k,j,p_terp) = chem(i,k,j,p_terp) & + +emis_ant(i,k,j,p_e_terp)*conv + chem(i,k,j,p_sesq) = chem(i,k,j,p_sesq) & + +emis_ant(i,k,j,p_e_sesq)*conv + chem(i,k,j,p_co) = chem(i,k,j,p_co) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_no) = chem(i,k,j,p_no) & + +emis_ant(i,k,j,p_e_no)*conv + chem(i,k,j,p_no2) = chem(i,k,j,p_no2) & + +emis_ant(i,k,j,p_e_no2)*conv + chem(i,k,j,p_phen) = chem(i,k,j,p_phen) & + +emis_ant(i,k,j,p_e_phen)*conv + chem(i,k,j,p_cres) = chem(i,k,j,p_cres) & + +emis_ant(i,k,j,p_e_cres)*conv + chem(i,k,j,p_meoh) = chem(i,k,j,p_meoh) & + +emis_ant(i,k,j,p_e_meoh)*conv + chem(i,k,j,p_gly) = chem(i,k,j,p_gly) & + +emis_ant(i,k,j,p_e_gly)*conv + chem(i,k,j,p_mgly) = chem(i,k,j,p_mgly) & + +emis_ant(i,k,j,p_e_mgly)*conv + chem(i,k,j,p_bacl) = chem(i,k,j,p_bacl) & + +emis_ant(i,k,j,p_e_bacl)*conv + chem(i,k,j,p_isoprod) = chem(i,k,j,p_isoprod) & + +emis_ant(i,k,j,p_e_isoprod)*conv + chem(i,k,j,p_methacro) = chem(i,k,j,p_methacro) & + +emis_ant(i,k,j,p_e_methacro)*conv + chem(i,k,j,p_mvk) = chem(i,k,j,p_mvk) & + +emis_ant(i,k,j,p_e_mvk)*conv + chem(i,k,j,p_prod2) = chem(i,k,j,p_prod2) & + +emis_ant(i,k,j,p_e_prod2)*conv + chem(i,k,j,p_ch4) = chem(i,k,j,p_ch4) & + +emis_ant(i,k,j,p_e_ch4)*conv + chem(i,k,j,p_bald) = chem(i,k,j,p_bald) & + +emis_ant(i,k,j,p_e_bald)*conv + chem(i,k,j,p_hcooh) = chem(i,k,j,p_hcooh) & + +emis_ant(i,k,j,p_e_hcooh)*conv + chem(i,k,j,p_cco_oh) = chem(i,k,j,p_cco_oh) & + +emis_ant(i,k,j,p_e_cco_oh)*conv + chem(i,k,j,p_rco_oh) = chem(i,k,j,p_rco_oh) & + +emis_ant(i,k,j,p_e_rco_oh)*conv + chem(i,k,j,p_nh3) = chem(i,k,j,p_nh3) & + +emis_ant(i,k,j,p_e_nh3)*conv + +!Use OM/OC of 1.25 for fossil and OM:OC of 1.57 for biomass +! O:C=0.06,H:C=1.8, N:C=0.02 for fossil : OM/OC=(16*0.06+12+14*0.02+12)/12=1.25 +!O:C=0.3 H:C=1.8, N:C=0.02 for biomass, OM/OC=1.57 for biomass + + chem(i,k,j,p_pcg1_b_c) = chem(i,k,j,p_pcg1_b_c) & + +(emis_ant(i,k,j,p_e_orgi_bb)/1.57+emis_ant(i,k,j,p_e_orgj_bb)/1.57)*conv3*1.17 + chem(i,k,j,p_pcg2_b_c) = chem(i,k,j,p_pcg2_b_c) & + +(emis_ant(i,k,j,p_e_orgi_bb)/1.57+emis_ant(i,k,j,p_e_orgj_bb)/1.57)*conv3*7.605 + chem(i,k,j,p_pcg1_f_c) = chem(i,k,j,p_pcg1_f_c) & + +(emis_ant(i,k,j,p_e_orgi_a)*2/1.25+emis_ant(i,k,j,p_e_orgj_a)*2/1.25)*conv3*1.17 + chem(i,k,j,p_pcg2_f_c) = chem(i,k,j,p_pcg2_f_c) & + +(emis_ant(i,k,j,p_e_orgi_a)*2/1.25+emis_ant(i,k,j,p_e_orgj_a)*2/1.25)*conv3*7.605 + chem(i,k,j,p_pcg1_b_o) = chem(i,k,j,p_pcg1_b_o) & + +(emis_ant(i,k,j,p_e_orgi_bb)/1.57+emis_ant(i,k,j,p_e_orgj_bb)/1.57)*conv3*0.40 + chem(i,k,j,p_pcg2_b_o) = chem(i,k,j,p_pcg2_b_o) & + +(emis_ant(i,k,j,p_e_orgi_bb)/1.57+emis_ant(i,k,j,p_e_orgj_bb)/1.57)*conv3*2.60 + chem(i,k,j,p_pcg1_f_o) = chem(i,k,j,p_pcg1_f_o) & + +(emis_ant(i,k,j,p_e_orgi_a)*2/1.25+emis_ant(i,k,j,p_e_orgj_a)*2/1.25)*conv3*0.08 + chem(i,k,j,p_pcg2_f_o) = chem(i,k,j,p_pcg2_f_o) & + +(emis_ant(i,k,j,p_e_orgi_a)*2/1.25+emis_ant(i,k,j,p_e_orgj_a)*2/1.25)*conv3*0.52 + + + end do + end do + end do + else + do j=jts,jte + do i=its,ite + do k=kts,min(config_flags%kemit,kte-ksub) + conv = 4.828e-4/rho_phy(i,k,j)*dtstep/(dz8w(i,k,j)*60.) + chem(i,k,j,p_so2) = chem(i,k,j,p_so2) & + +emis_ant(i,k,j,p_e_so2)*conv + chem(i,k,j,p_co) = chem(i,k,j,p_co) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_no) = chem(i,k,j,p_no) & + +emis_ant(i,k,j,p_e_co)*conv + chem(i,k,j,p_hcho) = chem(i,k,j,p_hcho) & + +emis_ant(i,k,j,p_e_hcho)*conv + end do + end do + end do + endif + + CASE (GOCARTRACM_KPP,GOCARTRADM2,GOCARTRADM2_KPP) IF(config_flags%emiss_inpt_opt /= 3 ) then IF(config_flags%kemit .GT. kte-ksub) THEN @@ -777,7 +1025,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & aer_addemiss_select: SELECT CASE(config_flags%chem_opt) CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_KPP, & - RACMSORG_AQ,RACMSORG_KPP,RACM_ESRLSORG_KPP) + RACMSORG_AQ,RACMSORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ) call wrf_debug(15,'emissions_driver calling sorgam_addemiss') call sorgam_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, chem, & ebu, & @@ -786,15 +1034,26 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & seasalt_emiss_active,config_flags%kemit, & config_flags%biomass_burn_opt, & config_flags%num_soil_layers,config_flags%emiss_opt, & +!jdf + config_flags%dust_opt, & + ktau,p8w,u_phy,v_phy,rho_phy,g,dx,erod, & +!jdf ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) - - CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) +!Added the aerosol case SAPRC99_MOSAIC_4BIN_VBS2_KPP to call mosaic addemiss + CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, & + CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ,SAPRC99_MOSAIC_4BIN_VBS2_KPP) call wrf_debug(15,'emissions_driver calling mosaic_addemiss') call mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & config_flags, chem, slai, ust, smois, ivgtyp, isltyp, & - emis_ant, & +!jdf + emis_ant,ebu,config_flags%biomass_burn_opt, & + config_flags%dust_opt, & + ktau,p8w,u_phy,v_phy,rho_phy,g,dx,erod, & +!jdf dust_emiss_active, seasalt_emiss_active, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & diff --git a/chem/mechanism_driver.F b/chem/mechanism_driver.F index 38913aa2f7..0f23cc949f 100755 --- a/chem/mechanism_driver.F +++ b/chem/mechanism_driver.F @@ -64,7 +64,8 @@ subroutine mechanism_driver(id,curr_secs,ktau,dtstep,ktauc,dtstepc,& INTENT(INOUT ) :: & addt,addx,addc,etep,oltp,olip,cslp,limp,hc5p,hc8p,tolp, & xylp,apip,isop,hc3p,ethp,o3p,tco3,mo2,o1d,olnn,rpho,xo2,& - ketp,olnd + ketp,olnd + ! ! on input from meteorological model @@ -119,6 +120,7 @@ subroutine mechanism_driver(id,curr_secs,ktau,dtstep,ktauc,dtstepc,& vch2o2_old(its:ite,kts:kte,jts:jte) = & max(chem(its:ite,kts:kte,jts:jte,p_h2o2),epsilc) + CASE (RADM2, RADM2SORG, RADM2SORG_AQ) CALL wrf_debug(15,'calling radm2_driver from mechanism_driver') if (config_flags%chem_opt /= RADM2) then diff --git a/chem/module_add_emiss_burn.F b/chem/module_add_emiss_burn.F index 637e0438de..2a577956a1 100644 --- a/chem/module_add_emiss_burn.F +++ b/chem/module_add_emiss_burn.F @@ -295,7 +295,7 @@ subroutine add_emis_burn(id,dtstep,ktau,dz8w,rho_phy,chem, & enddo enddo enddo - CASE (RADM2,RACM_KPP,RACM_MIM_KPP) + CASE (RADM2,RACM_KPP,RACM_MIM_KPP,SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) do j=jts,jte do i=its,ite do k=kts,kte diff --git a/chem/module_aerosols_sorgam.F b/chem/module_aerosols_sorgam.F index 8be43ec792..801cae4f26 100644 --- a/chem/module_aerosols_sorgam.F +++ b/chem/module_aerosols_sorgam.F @@ -8078,6 +8078,7 @@ SUBROUTINE sorgam_addemiss( & slai,ust,smois,ivgtyp,isltyp, & emis_ant,dust_emiss_active, & seasalt_emiss_active,kemit,biom,num_soil_layers,emissopt, & + dust_opt,ktau,p8w,u_phy,v_phy,rho_phy,g,dx,erod, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -8092,6 +8093,7 @@ SUBROUTINE sorgam_addemiss( & INTEGER, INTENT(IN ) :: seasalt_emiss_active, kemit,emissopt, & dust_emiss_active,num_soil_layers,id, & + ktau,dust_opt, & biom,ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte @@ -8119,6 +8121,14 @@ SUBROUTINE sorgam_addemiss( & INTENT(IN ) :: & alt, dz8w +! add for gocart dust + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(IN ) :: p8w,u_phy,v_phy,rho_phy + REAL, INTENT(IN ) :: dx, g + REAL, DIMENSION( ims:ime, jms:jme, 3 ), & + INTENT(IN ) :: erod +! + REAL, DIMENSION( ims:ime , jms:jme ), & INTENT(IN ) :: & u10, v10, xland, slai, ust @@ -8333,7 +8343,7 @@ SUBROUTINE sorgam_addemiss( & ! ims,ime, jms,jme, kms,kme, & ! its,ite, jts,jte, kts,kte ) end if - if( dust_emiss_active == 1 ) then + if( dust_opt == 2 ) then call sorgam_dust_emiss( & slai, ust, smois, ivgtyp, isltyp, & id, dtstep, u10, v10, alt, dz8w, & @@ -8342,6 +8352,15 @@ SUBROUTINE sorgam_addemiss( & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) end if + if( dust_opt == 3 ) then + call sorgam_dust_gocartemis( & + ktau,dtstep,num_soil_layers,alt,u_phy, & + v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod, & + ivgtyp,isltyp,xland,dx,g, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + end if END SUBROUTINE sorgam_addemiss @@ -8652,6 +8671,7 @@ subroutine sorgam_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & f8=0.005 f50=0.00 f51=0.10 + f51=0.066 f52=0.00 alphamask=(f8+f50)*1.0+(f51+f52)*0.5 endif @@ -8660,6 +8680,7 @@ subroutine sorgam_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & f50=0.00 f51=0.00 f52=0.15 + f52=0.10 alphamask=(f8+f50)*1.0+(f51+f52)*0.5 endif if (ivgtyp(i,j) .eq. 10) then @@ -8771,18 +8792,22 @@ subroutine sorgam_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & ! if (ivgtyp(i,j) .eq. 8) print*,'jdf',i,j,ustar1,ustart0,factaa,ftot chem(i,k,j,p_p25j)=chem(i,k,j,p_p25j) + & factbb * (sz(3)+sz(4)+sz(5)+sz(6)) * fractot +!jdf factbb * (sz(3)+sz(4)+sz(5)) * fractot chem(i,k,j,p_soila)=chem(i,k,j,p_soila) + & factbb * (sz(7)+sz(8)) * fractot +!jdf factbb * (sz(6)+sz(7)+sz(8)) * fractot ! mass1part is mass of a single particle in ug, density of dust ~2.5 g cm-3 densdust=2.5 dp_meanvol_tmp = 1.0e2*dginia*exp(1.5*l2sginia) ! accum mass1part=0.523598*(dp_meanvol_tmp**3)*densdust*1.0e06 chem(i,k,j,p_ac0)=chem(i,k,j,p_ac0) + & factbb * (sz(3)+sz(4)+sz(5)+sz(6)) * fractot / mass1part +!jdf factbb * (sz(3)+sz(4)+sz(5)) * fractot / mass1part dp_meanvol_tmp = 1.0e2*dginic*exp(1.5*l2sginic) ! coarse mass1part=0.523598*(dp_meanvol_tmp**3)*densdust*1.0e06 chem(i,k,j,p_corn)=chem(i,k,j,p_corn) + & factbb * (sz(7)+sz(8)) * fractot / mass1part +!jdf factbb * (sz(6)+sz(7)+sz(8)) * fractot / mass1part 1840 continue @@ -8793,6 +8818,230 @@ subroutine sorgam_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & END subroutine sorgam_dust_emiss +!==================================================================================== +!add another dust emission scheme following GOCART mechanism --czhao 09/17/2009 +!==================================================================================== + subroutine sorgam_dust_gocartemis (ktau,dt,num_soil_layers,alt,u_phy, & + v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod, & + ivgtyp,isltyp,xland,dx,g, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + USE module_data_gocart_dust + USE module_configure + USE module_state_description + USE module_model_constants, ONLY: mwdry + USE module_data_mosaic_asect + IMPLICIT NONE + + INTEGER, INTENT(IN ) :: ktau, num_soil_layers, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte + INTEGER,DIMENSION( ims:ime , jms:jme ) , & + INTENT(IN ) :: & + ivgtyp, & + isltyp + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & + INTENT(INOUT ) :: chem + REAL, DIMENSION( ims:ime, num_soil_layers, jms:jme ) , & + INTENT(INOUT) :: smois + REAL, DIMENSION( ims:ime , jms:jme, 3 ) , & + INTENT(IN ) :: erod + REAL, DIMENSION( ims:ime , jms:jme ) , & + INTENT(IN ) :: & + u10, & + v10, & + xland + REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), & + INTENT(IN ) :: & + alt, & + dz8w,p8w, & + u_phy,v_phy,rho_phy + + REAL, INTENT(IN ) :: dt,dx,g +! +! local variables +! + integer :: nmx,i,j,k,ndt,imx,jmx,lmx + integer ilwi, start_month + real*8, DIMENSION (3) :: erodin + real*8, DIMENSION (5) :: bems + real*8 w10m,gwet,airden,airmas + real*8 cdustemis,jdustemis,cdustcon,jdustcon + real*8 cdustdens,jdustdens,mass1part,jdustdiam,cdustdiam,dp_meanvol_tmp + real*8 dxy + real*8 conver,converi + real dttt + real soilfacj,rhosoilj,rhosoilc + real totalemis,accfrac,corfrac,rscale1,rscale2 + + accfrac=0.07 ! assign 7% to accumulation mode + corfrac=0.93 ! assign 93% to coarse mode + rscale1=1.00 ! to account for the dust larger than 10um in radius + rscale2=1.02 ! to account for the dust larger than 10um in radius + accfrac=accfrac*rscale1 + corfrac=corfrac*rscale2 + + rhosoilj=2.5e3 + rhosoilc=2.6e3 + soilfacj=soilfac*rhosoilj/rhosoilc + + conver=1.e-9 + converi=1.e9 +! +! number of dust bins + nmx=5 + k=kts + do j=jts,jte + do i=its,ite +! +! don't do dust over water!!! + if(xland(i,j).lt.1.5)then + + ilwi=1 + start_month = 3 ! it doesn't matter, ch_dust is not a month dependent now, a constant + w10m=sqrt(u10(i,j)*u10(i,j)+v10(i,j)*v10(i,j)) + airmas=-(p8w(i,kts+1,j)-p8w(i,kts,j))*dx*dx/g ! kg + +! we don't trust the u10,v10 values, if model layers are very thin near surface + if(dz8w(i,kts,j).lt.12.)w10m=sqrt(u_phy(i,kts,j)*u_phy(i,kts,j)+v_phy(i,kts,j)*v_phy(i,kts,j)) + !erodin(1)=erod(i,j,1)/dx/dx ! czhao erod shouldn't be scaled to the area, because it's a fraction + !erodin(2)=erod(i,j,2)/dx/dx + !erodin(3)=erod(i,j,3)/dx/dx + erodin(1)=erod(i,j,1) + erodin(2)=erod(i,j,2) + erodin(3)=erod(i,j,3) +! +! volumetric soil moisture over porosity + gwet=smois(i,1,j)/porosity(isltyp(i,j)) + ndt=ifix(dt) + airden=rho_phy(i,kts,j) + dxy=dx*dx + + call sorgam_source_du( nmx, dt,i,j, & + erodin, ilwi, dxy, w10m, gwet, airden, airmas, & + bems,start_month,g) + +!bems: kg/timestep/cell + !sum up the dust emission from 0.1-10 um in radius + ! unit change from kg/timestep/cell to ug/m2/s + totalemis=(sum(bems(1:5))/dt)*converi/dxy + ! to account for the particles larger than 10 um radius + ! based on assumed size distribution + jdustemis = totalemis*accfrac ! accumulation mode + cdustemis = totalemis*corfrac ! coarse mode + + cdustcon = sum(bems(1:5))*corfrac/airmas ! kg/kg-dryair + cdustcon = cdustcon * converi ! ug/kg-dryair + jdustcon = sum(bems(1:5))*accfrac/airmas ! kg/kg-dryair + jdustcon = jdustcon * converi ! ug/kg-dryair + + chem(i,k,j,p_p25)=chem(i,k,j,p_p25j) + jdustcon + chem(i,k,j,p_soila)=chem(i,k,j,p_soila) + cdustcon + +! czhao doing dust number emission following pm10 +! use soilfacj for accumulation mode because GOCART assign a less dense dust in +! accumulation mode + chem(i,k,j,p_ac0) = chem(i,k,j,p_ac0) + jdustcon * factnuma*soilfacj + chem(i,k,j,p_corn) = chem(i,k,j,p_corn) + cdustcon * factnumc*soilfac + + endif + enddo + enddo + +end subroutine sorgam_dust_gocartemis + + SUBROUTINE sorgam_source_du( nmx, dt1,i,j, & + erod, ilwi, dxy, w10m, gwet, airden, airmas, & + bems,month,g0) + +! **************************************************************************** +! * Evaluate the source of each dust particles size classes (kg/m3) +! * by soil emission. +! * Input: +! * EROD Fraction of erodible grid cell (-) +! * for 1: Sand, 2: Silt, 3: Clay +! * DUSTDEN Dust density (kg/m3) +! * DXY Surface of each grid cell (m2) +! * AIRVOL Volume occupy by each grid boxes (m3) +! * NDT1 Time step (s) +! * W10m Velocity at the anemometer level (10meters) (m/s) +! * u_tresh Threshold velocity for particule uplifting (m/s) +! * CH_dust Constant to fudge the total emission of dust (s2/m2) +! * +! * Output: +! * DSRC Source of each dust type (kg/timestep/cell) +! * +! * Working: +! * SRC Potential source (kg/m/timestep/cell) +! * +! **************************************************************************** + + USE module_data_gocart_dust + + INTEGER, INTENT(IN) :: nmx + REAL*8, INTENT(IN) :: erod(ndcls) + INTEGER, INTENT(IN) :: ilwi,month + + REAL*8, INTENT(IN) :: w10m, gwet + REAL*8, INTENT(IN) :: dxy + REAL*8, INTENT(IN) :: airden, airmas + REAL*8, INTENT(OUT) :: bems(nmx) + + REAL*8 :: den(nmx), diam(nmx) + REAL*8 :: tsrc, u_ts0, cw, u_ts, dsrc, srce + REAL, intent(in) :: g0 + REAL :: rhoa, g,dt1 + INTEGER :: i, j, n, m, k + + ! default is 1 ug s2 m-5 == 1.e-9 kg s2 m-5 + !ch_dust(:,:)=0.8D-9 ! ch_dust is defined here instead of in the chemics_ini.F if with SORGAM -czhao + ch_dust(:,:)=1.0D-9 ! default + !ch_dust(:,:)=0.65D-9 ! ch_dust is tuned to match MODIS and AERONET measurements over Sahara + !ch_dust(:,:)=1.0D-9*0.36 ! ch_dust is scaled to sorgam total dust emission + + ! executable statemenst + DO n = 1, nmx + ! Threshold velocity as a function of the dust density and the diameter from Bagnold (1941) + den(n) = den_dust(n)*1.0D-3 + diam(n) = 2.0*reff_dust(n)*1.0D2 + g = g0*1.0E2 + ! Pointer to the 3 classes considered in the source data files + m = ipoint(n) + tsrc = 0.0 + rhoa = airden*1.0D-3 + u_ts0 = 0.13*1.0D-2*SQRT(den(n)*g*diam(n)/rhoa)* & + SQRT(1.0+0.006/den(n)/g/(diam(n))**2.5)/ & + SQRT(1.928*(1331.0*(diam(n))**1.56+0.38)**0.092-1.0) + + ! Case of surface dry enough to erode + IF (gwet < 0.5) THEN ! Pete's modified value +! IF (gwet < 0.2) THEN + u_ts = MAX(0.0D+0,u_ts0*(1.2D+0+2.0D-1*LOG10(MAX(1.0D-3, gwet)))) + ELSE + ! Case of wet surface, no erosion + u_ts = 100.0 + END IF + srce = frac_s(n)*erod(m)*dxy ! (m2) + IF (ilwi == 1 ) THEN + dsrc = ch_dust(n,month)*srce*w10m**2 & + * (w10m - u_ts)*dt1 ! (kg) + ELSE + dsrc = 0.0 + END IF + IF (dsrc < 0.0) dsrc = 0.0 + + ! Update dust mixing ratio at first model level. + !tc(n) = tc(n) + dsrc / airmas !kg/kg-dryair -czhao + bems(n) = dsrc ! kg/timestep/cell + + ENDDO + +END SUBROUTINE sorgam_source_du + +!=========================================================================== + !=========================================================================== @@ -8867,3 +9116,6 @@ subroutine wetscav_sorgam_driver (id,ktau,dtstep,ktauc,config_flags, & end subroutine wetscav_sorgam_driver END Module module_aerosols_sorgam + + + diff --git a/chem/module_bioemi_megan2.F b/chem/module_bioemi_megan2.F index 750a6ed0f1..a936d12b9f 100644 --- a/chem/module_bioemi_megan2.F +++ b/chem/module_bioemi_megan2.F @@ -421,7 +421,11 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & ! get p_of_megan2racm(:), p_of_racm(:), and racm_per_megan(:) CALL get_megan2racm_table - CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN, & + CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, CBMZSORG, CBMZSORG_AQ) ! get p_of_megan2cbmz(:), p_of_cbmz(:), and cbmz_per_megan(:) CALL get_megan2cbmz_table @@ -430,6 +434,9 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & ! get p_of_megan2mozcart(:), p_of_mozcart(:), and mozcart_per_megan(:) CALL get_megan2mozcart_table + CASE (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) ! FIX FOR SAPRC07A + CALL get_megan2saprcnov_table + CASE DEFAULT CALL wrf_error_fatal('Species conversion table for MEGAN v2.04 not available. ') @@ -690,6 +697,13 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & ! Output emissions for some species as diagnostics ! (mol km-2 hr-1) +! print*,'is_isoprene',is_isoprene +! print*,'is_pinene_a',is_pinene_a +! print*,'is_pinene_b',is_pinene_b + +! if (E_megan2 (is_isoprene).gt.0) print*,'E_megan2 (is_isoprene)',E_megan2 (is_isoprene) +! if (E_megan2 (is_pinene_a).gt.0) print*,'E_megan2 (is_pinene_a)',E_megan2 (is_pinene_a) + mebio_isop (i,j) = E_megan2 ( is_isoprene ) mebio_apin (i,j) = E_megan2 ( is_pinene_a ) mebio_bpin (i,j) = E_megan2 ( is_pinene_b ) @@ -972,7 +986,11 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & END DO - CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN, & + CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ,CBMZ_MOSAIC_DMS_8BIN_AQ,CBMZSORG, CBMZSORG_AQ) DO icount = 1, n_megan2cbmz @@ -992,7 +1010,9 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & ! Increase gas-phase concentrations (in ppmv) due to ! biogenic emissions - chem(i,kts,j,p_in_chem) = chem(i,kts,j,p_in_chem) + gas_emis * emis2ppm + chem(i,kts,j,p_in_chem) = chem(i,kts,j,p_in_chem) + gas_emis * emis2ppm !for eg. p_in_chem=p_iso for cbmz species + !make another table for sorgam species (such as api and lim) + ! similar to racm table ! Add emissions to diagnostic output variables. ! ebio_xxx (mol km-2 hr-1) were originally used by the @@ -1041,7 +1061,53 @@ SUBROUTINE bio_emissions_megan2(id,config_flags,ktau,dtstep, & END IF ! ( p_of_cbmz (icount) .NE. non_react ) END DO - + + CASE (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) ! FIX FOR SAPRC99 AND SAPRC07 + + DO icount = 1, n_megan2saprcnov + + IF ( p_of_saprcnov(icount) .NE. non_react ) THEN + + ! Get index to chem array for the corresponding RADM2 + ! species. + p_in_chem = p_of_saprcnov(icount) + + ! Check if the species is actually in the mechanism + IF ( p_in_chem > param_first_scalar ) THEN + + ! Emission rate for mechanism species in mol km-2 hr-1 + gas_emis = saprcnov_per_megan(icount) * E_megan2(p_of_megan2saprcnov(icount)) + + ! Increase gas-phase concentrations (in ppmv) due to + ! biogenic emissions + chem(i,kts,j,p_in_chem) = chem(i,kts,j,p_in_chem) + gas_emis*emis2ppm + + ! Add emissions to diagnostic output variables. + ! ebio_xxx (mol km-2 hr-1) were originally used by the + ! BEIS3.11 biogenic emissions module. + ! I have also borrowed variable e_bio (ppm m min-1). + IF ( p_in_chem .EQ. p_isoprene ) THEN + ebio_iso(i,j) = ebio_iso(i,j) + gas_emis + e_bio(i,j,p_isoprene-1) = e_bio(i,j,p_isoprene-1) + gas_emis*convert2 + ELSE IF ( p_in_chem .EQ. p_terp) THEN + ebio_api(i,j) = ebio_api(i,j) + gas_emis + e_bio(i,j,p_terp-1) = e_bio(i,j,p_terp-1) + gas_emis*convert2 + ELSE IF ( p_in_chem .EQ. p_sesq) THEN + ebio_lim(i,j) = ebio_lim(i,j) + gas_emis + e_bio(i,j,p_sesq-1) = e_bio(i,j,p_sesq-1) + gas_emis*convert2 + ELSE IF ( p_in_chem .EQ. p_no) THEN + ebio_no(i,j) = ebio_no(i,j) + gas_emis + e_bio(i,j,p_no-1) = e_bio(i,j,p_no-1) + gas_emis*convert2 + END IF + + END IF !( p_in_chem > param_first_scalar ) + + END IF !( p_of_saprcnov(icount) .NE. non_react ) + + END DO + + + CASE DEFAULT CALL wrf_error_fatal('Species conversion table for MEGAN v2.04 not available. ') diff --git a/chem/module_cbmz.F b/chem/module_cbmz.F index b86d9da027..5115c81eb5 100644 --- a/chem/module_cbmz.F +++ b/chem/module_cbmz.F @@ -3263,7 +3263,8 @@ subroutine gasthermrk_m4( tempbox, cair_mlc, & rk_m4(15) = 1.0e-15 rk_m4(16) = 1.6e-11 rk_m4(17) = 1.0e-13 - rk_m4(18) = arr(2.5e-13, -8686., te) +!Bug fixing, the coefficient changed from 2.5e-13 to 2.5e13 by Qing.Yang@pnl.gov + rk_m4(18) = arr(2.5e13, -8686., te) rk_m4(19) = 1.0e-14 rk_m4(20) = 5.0e-15 rk_m4(21) = 2.5e-13 diff --git a/chem/module_cbmz_addemiss.F b/chem/module_cbmz_addemiss.F index 83aafd8eb1..853f485c3a 100644 --- a/chem/module_cbmz_addemiss.F +++ b/chem/module_cbmz_addemiss.F @@ -23,7 +23,7 @@ MODULE module_cbmz_addemiss !---------------------------------------------------------------------- subroutine cbmz_addemiss_anthro( id, dtstep, dz8w, config_flags, & - rho_phy, chem,emis_ant, & + rho_phy, chem,emis_ant,alt, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -60,12 +60,12 @@ subroutine cbmz_addemiss_anthro( id, dtstep, dz8w, config_flags, & emis_ant ! layer thickness (m) REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , & - INTENT(IN ) :: dz8w, rho_phy + INTENT(IN ) :: dz8w, rho_phy,alt ! local variables integer :: i,j,k real, parameter :: efact1 = 1.0/60.0 - real :: conv + real :: conv,conv3 double precision :: chem_sum(num_chem) @@ -101,6 +101,7 @@ subroutine cbmz_addemiss_anthro( id, dtstep, dz8w, config_flags, & !v1 units: conv = dtstep/(dz8w(i,k,j)*60.) !v2 units: conv = 4.828e-4/rho_phy(i,k,j)*dtstep/(dz8w(i,k,j)*60.) + conv3 = (dtstep/dz8w(i,k,j))*alt(i,k,j)*28/250*1e-3 #if (defined(CHEM_DBG_I) && defined(CHEM_DBG_J) && defined(CHEM_DBG_K)) if( (i <= CHEM_DBG_I .and. i >= CHEM_DBG_I) .and. & @@ -158,7 +159,14 @@ subroutine cbmz_addemiss_anthro( id, dtstep, dz8w, config_flags, & chem(i,k,j,p_xyl) = chem(i,k,j,p_xyl) & +emis_ant(i,k,j,p_e_xyl)*conv chem(i,k,j,p_ket) = chem(i,k,j,p_ket) & - +emis_ant(i,k,j,p_e_ket)*conv + +emis_ant(i,k,j,p_e_ket)*conv + + chem_select_2 : SELECT CASE( config_flags%chem_opt ) + + END SELECT chem_select_2 + + + ! when emissions input file is "radm2sorg" variety, calc par emissions as a ! combination of the anthropogenic emissions for radm2 primary voc species diff --git a/chem/module_data_mgn2mech.F b/chem/module_data_mgn2mech.F index 0886e4baa3..1def03bdad 100644 --- a/chem/module_data_mgn2mech.F +++ b/chem/module_data_mgn2mech.F @@ -51,6 +51,11 @@ MODULE module_data_mgn2mech REAL, DIMENSION (n_megan2mozcart) :: mozcart_per_megan DATA p_of_mozcart / n_megan2mozcart*non_react / + INTEGER, PARAMETER :: n_megan2saprcnov = 138 + INTEGER, DIMENSION (n_megan2saprcnov) :: p_of_megan2saprcnov, p_of_saprcnov + REAL, DIMENSION (n_megan2saprcnov) :: saprcnov_per_megan + DATA p_of_saprcnov / n_megan2saprcnov*non_react / + !-------------------------------------------------------------------- ! Some naming convention in denoting MEGAN species ! _a = alpha , _b = beta , _c = cis , _al = allo , @@ -750,4 +755,150 @@ SUBROUTINE get_megan2racm_table END SUBROUTINE get_megan2racm_table + SUBROUTINE get_megan2saprcnov_table + ! Based on Tan''s MAP_CV2SAPRC99.EXT + + ! Index of Index of Molar ratio + ! MEGAN species RADM2 Species + + p_of_megan2saprcnov( 1) = is_isoprene ; p_of_saprcnov( 1) = p_isoprene ; saprcnov_per_megan( 1) = 1.000 + p_of_megan2saprcnov( 2) = is_myrcene ; p_of_saprcnov( 2) = p_terp ; saprcnov_per_megan( 2) = 1.000 + p_of_megan2saprcnov( 3) = is_sabinene ; p_of_saprcnov( 3) = p_terp ; saprcnov_per_megan( 3) = 1.000 + p_of_megan2saprcnov( 4) = is_limonene ; p_of_saprcnov( 4) = p_terp ; saprcnov_per_megan( 4) = 1.000 + p_of_megan2saprcnov( 5) = is_carene_3 ; p_of_saprcnov( 5) = p_terp ; saprcnov_per_megan( 5) = 1.000 + p_of_megan2saprcnov( 6) = is_ocimene_t_b ; p_of_saprcnov( 6) = p_terp ; saprcnov_per_megan( 6) = 1.000 + p_of_megan2saprcnov( 7) = is_pinene_b ; p_of_saprcnov( 7) = p_terp ; saprcnov_per_megan( 7) = 1.000 + p_of_megan2saprcnov( 8) = is_pinene_a ; p_of_saprcnov( 8) = p_terp ; saprcnov_per_megan( 8) = 1.000 + p_of_megan2saprcnov( 9) = is_2met_styrene ; p_of_saprcnov( 9) = p_ole2 ; saprcnov_per_megan( 9) = 1.000 + p_of_megan2saprcnov( 10) = is_cymene_p ; p_of_saprcnov( 10) = p_aro2 ; saprcnov_per_megan( 10) = 1.000 + p_of_megan2saprcnov( 11) = is_cymene_o ; p_of_saprcnov( 11) = p_aro2 ; saprcnov_per_megan( 11) = 1.000 + p_of_megan2saprcnov( 12) = is_phellandrene_a ; p_of_saprcnov( 12) = p_terp ; saprcnov_per_megan( 12) = 1.000 + p_of_megan2saprcnov( 13) = is_thujene_a ; p_of_saprcnov( 13) = p_terp ; saprcnov_per_megan( 13) = 1.000 + p_of_megan2saprcnov( 14) = is_terpinene_a ; p_of_saprcnov( 14) = p_terp ; saprcnov_per_megan( 14) = 1.000 + p_of_megan2saprcnov( 15) = is_terpinene_g ; p_of_saprcnov( 15) = p_terp ; saprcnov_per_megan( 15) = 1.000 + p_of_megan2saprcnov( 16) = is_terpinolene ; p_of_saprcnov( 16) = p_terp ; saprcnov_per_megan( 16) = 1.000 + p_of_megan2saprcnov( 17) = is_phellandrene_b ; p_of_saprcnov( 17) = p_terp ; saprcnov_per_megan( 17) = 1.000 + p_of_megan2saprcnov( 18) = is_camphene ; p_of_saprcnov( 18) = p_terp ; saprcnov_per_megan( 18) = 1.000 + p_of_megan2saprcnov( 19) = is_bornene ; p_of_saprcnov( 19) = p_terp ; saprcnov_per_megan( 19) = 1.000 + p_of_megan2saprcnov( 20) = is_fenchene_a ; p_of_saprcnov( 20) = p_terp ; saprcnov_per_megan( 20) = 1.000 + p_of_megan2saprcnov( 21) = is_ocimene_al ; p_of_saprcnov( 21) = p_terp ; saprcnov_per_megan( 21) = 1.000 + p_of_megan2saprcnov( 22) = is_ocimene_c_b ; p_of_saprcnov( 22) = p_terp ; saprcnov_per_megan( 22) = 1.000 + p_of_megan2saprcnov( 23) = is_tricyclene ; p_of_saprcnov( 23) = p_alk5 ; saprcnov_per_megan( 23) = 1.000 + p_of_megan2saprcnov( 24) = is_estragole ; p_of_saprcnov( 24) = p_terp ; saprcnov_per_megan( 24) = 1.000 + p_of_megan2saprcnov( 25) = is_camphor ; p_of_saprcnov( 25) = p_terp ; saprcnov_per_megan( 25) = 1.000 + p_of_megan2saprcnov( 26) = is_fenchone ; p_of_saprcnov( 26) = p_alk5 ; saprcnov_per_megan( 26) = 1.000 + p_of_megan2saprcnov( 27) = is_piperitone ; p_of_saprcnov( 27) = p_terp ; saprcnov_per_megan( 27) = 1.000 + p_of_megan2saprcnov( 28) = is_thujone_a ; p_of_saprcnov( 28) = p_alk5 ; saprcnov_per_megan( 28) = 1.000 + p_of_megan2saprcnov( 29) = is_thujone_b ; p_of_saprcnov( 29) = p_alk5 ; saprcnov_per_megan( 29) = 1.000 + p_of_megan2saprcnov( 30) = is_cineole_1_8 ; p_of_saprcnov( 30) = p_alk5 ; saprcnov_per_megan( 30) = 1.000 + p_of_megan2saprcnov( 31) = is_borneol ; p_of_saprcnov( 31) = p_alk5 ; saprcnov_per_megan( 31) = 1.000 + p_of_megan2saprcnov( 32) = is_linalool ; p_of_saprcnov( 32) = p_terp ; saprcnov_per_megan( 32) = 1.000 + p_of_megan2saprcnov( 33) = is_terpineol_4 ; p_of_saprcnov( 33) = p_terp ; saprcnov_per_megan( 33) = 1.000 + p_of_megan2saprcnov( 34) = is_terpineol_a ; p_of_saprcnov( 34) = p_terp ; saprcnov_per_megan( 34) = 1.000 + p_of_megan2saprcnov( 35) = is_linalool_oxd_c ; p_of_saprcnov( 35) = p_terp ; saprcnov_per_megan( 35) = 1.000 + p_of_megan2saprcnov( 36) = is_linalool_oxd_t ; p_of_saprcnov( 36) = p_terp ; saprcnov_per_megan( 36) = 1.000 + p_of_megan2saprcnov( 37) = is_ionone_b ; p_of_saprcnov( 37) = p_terp ; saprcnov_per_megan( 37) = 1.000 + p_of_megan2saprcnov( 38) = is_bornyl_act ; p_of_saprcnov( 38) = p_alk5 ; saprcnov_per_megan( 38) = 1.000 + p_of_megan2saprcnov( 39) = is_farnescene_a ; p_of_saprcnov( 39) = p_sesq ; saprcnov_per_megan( 39) = 1.000 + p_of_megan2saprcnov( 40) = is_caryophyllene_b ; p_of_saprcnov( 40) = p_sesq ; saprcnov_per_megan( 40) = 1.000 + p_of_megan2saprcnov( 41) = is_acoradiene ; p_of_saprcnov( 41) = p_terp ; saprcnov_per_megan( 41) = 1.000 + p_of_megan2saprcnov( 42) = is_aromadendrene ; p_of_saprcnov( 42) = p_sesq ; saprcnov_per_megan( 42) = 1.000 + p_of_megan2saprcnov( 43) = is_bergamotene_a ; p_of_saprcnov( 43) = p_sesq ; saprcnov_per_megan( 43) = 1.000 + p_of_megan2saprcnov( 44) = is_bergamotene_b ; p_of_saprcnov( 44) = p_sesq ; saprcnov_per_megan( 44) = 1.000 + p_of_megan2saprcnov( 45) = is_bisabolene_a ; p_of_saprcnov( 45) = p_sesq ; saprcnov_per_megan( 45) = 1.000 + p_of_megan2saprcnov( 46) = is_bisabolene_b ; p_of_saprcnov( 46) = p_sesq ; saprcnov_per_megan( 46) = 1.000 + p_of_megan2saprcnov( 47) = is_bourbonene_b ; p_of_saprcnov( 47) = p_sesq ; saprcnov_per_megan( 47) = 1.000 + p_of_megan2saprcnov( 48) = is_cadinene_d ; p_of_saprcnov( 48) = p_sesq ; saprcnov_per_megan( 48) = 1.000 + p_of_megan2saprcnov( 49) = is_cadinene_g ; p_of_saprcnov( 49) = p_sesq ; saprcnov_per_megan( 49) = 1.000 + p_of_megan2saprcnov( 50) = is_cedrene_a ; p_of_saprcnov( 50) = p_sesq ; saprcnov_per_megan( 50) = 1.000 + p_of_megan2saprcnov( 51) = is_copaene_a ; p_of_saprcnov( 51) = p_sesq ; saprcnov_per_megan( 51) = 1.000 + p_of_megan2saprcnov( 52) = is_cubebene_a ; p_of_saprcnov( 52) = p_sesq ; saprcnov_per_megan( 52) = 1.000 + p_of_megan2saprcnov( 53) = is_cubebene_b ; p_of_saprcnov( 53) = p_sesq ; saprcnov_per_megan( 53) = 1.000 + p_of_megan2saprcnov( 54) = is_elemene_b ; p_of_saprcnov( 54) = p_sesq ; saprcnov_per_megan( 54) = 1.000 + p_of_megan2saprcnov( 55) = is_farnescene_b ; p_of_saprcnov( 55) = p_sesq ; saprcnov_per_megan( 55) = 1.000 + p_of_megan2saprcnov( 56) = is_germacrene_b ; p_of_saprcnov( 56) = p_sesq ; saprcnov_per_megan( 56) = 1.000 + p_of_megan2saprcnov( 57) = is_germacrene_d ; p_of_saprcnov( 57) = p_sesq ; saprcnov_per_megan( 57) = 1.000 + p_of_megan2saprcnov( 58) = is_gurjunene_b ; p_of_saprcnov( 58) = p_sesq ; saprcnov_per_megan( 58) = 1.000 + p_of_megan2saprcnov( 59) = is_humulene_a ; p_of_saprcnov( 59) = p_sesq ; saprcnov_per_megan( 59) = 1.000 + p_of_megan2saprcnov( 60) = is_humulene_g ; p_of_saprcnov( 60) = p_sesq ; saprcnov_per_megan( 60) = 1.000 + p_of_megan2saprcnov( 61) = is_isolongifolene ; p_of_saprcnov( 61) = p_sesq ; saprcnov_per_megan( 61) = 1.000 + p_of_megan2saprcnov( 62) = is_longifolene ; p_of_saprcnov( 62) = p_sesq ; saprcnov_per_megan( 62) = 1.000 + p_of_megan2saprcnov( 63) = is_longipinene ; p_of_saprcnov( 63) = p_sesq ; saprcnov_per_megan( 63) = 1.000 + p_of_megan2saprcnov( 64) = is_muurolene_a ; p_of_saprcnov( 64) = p_sesq ; saprcnov_per_megan( 64) = 1.000 + p_of_megan2saprcnov( 65) = is_muurolene_g ; p_of_saprcnov( 65) = p_sesq ; saprcnov_per_megan( 65) = 1.000 + p_of_megan2saprcnov( 66) = is_selinene_b ; p_of_saprcnov( 66) = p_sesq ; saprcnov_per_megan( 66) = 1.000 + p_of_megan2saprcnov( 67) = is_selinene_d ; p_of_saprcnov( 67) = p_sesq ; saprcnov_per_megan( 67) = 1.000 + p_of_megan2saprcnov( 68) = is_nerolidol_c ; p_of_saprcnov( 68) = p_sesq ; saprcnov_per_megan( 68) = 1.000 + p_of_megan2saprcnov( 69) = is_nerolidol_t ; p_of_saprcnov( 69) = p_sesq ; saprcnov_per_megan( 69) = 1.000 + p_of_megan2saprcnov( 70) = is_cedrol ; p_of_saprcnov( 70) = p_sesq ; saprcnov_per_megan( 70) = 1.000 + p_of_megan2saprcnov( 71) = is_mbo_2m3e2ol ; p_of_saprcnov( 71) = p_isoprene ; saprcnov_per_megan( 71) = 1.000 + p_of_megan2saprcnov( 72) = is_methanol ; p_of_saprcnov( 72) = p_meoh ; saprcnov_per_megan( 72) = 1.000 + p_of_megan2saprcnov( 73) = is_acetone ; p_of_saprcnov( 73) = p_acet ; saprcnov_per_megan( 73) = 1.000 + p_of_megan2saprcnov( 74) = is_methane ; p_of_saprcnov( 74) = p_ch4 ; saprcnov_per_megan( 74) = 1.000 + p_of_megan2saprcnov( 75) = is_ammonia ; p_of_saprcnov( 75) = non_react ; saprcnov_per_megan( 75) = 1.000 + p_of_megan2saprcnov( 76) = is_nitrous_oxd ; p_of_saprcnov( 76) = non_react ; saprcnov_per_megan( 76) = 1.000 + p_of_megan2saprcnov( 77) = is_nitric_oxd ; p_of_saprcnov( 77) = p_no ; saprcnov_per_megan( 77) = 1.000 + p_of_megan2saprcnov( 78) = is_acetaldehyde ; p_of_saprcnov( 78) = p_ccho ; saprcnov_per_megan( 78) = 1.000 + p_of_megan2saprcnov( 79) = is_ethanol ; p_of_saprcnov( 79) = p_alk3 ; saprcnov_per_megan( 79) = 1.000 + p_of_megan2saprcnov( 80) = is_formic_acid ; p_of_saprcnov( 80) = p_hcooh ; saprcnov_per_megan( 80) = 1.000 + p_of_megan2saprcnov( 81) = is_formaldehyde ; p_of_saprcnov( 81) = p_hcho ; saprcnov_per_megan( 81) = 1.000 + p_of_megan2saprcnov( 82) = is_acetic_acid ; p_of_saprcnov( 82) = p_cco_oh ; saprcnov_per_megan( 82) = 1.000 + p_of_megan2saprcnov( 83) = is_mbo_3m2e1ol ; p_of_saprcnov( 83) = p_isoprene ; saprcnov_per_megan( 83) = 1.000 + p_of_megan2saprcnov( 84) = is_mbo_3m3e1ol ; p_of_saprcnov( 84) = p_isoprene ; saprcnov_per_megan( 84) = 1.000 + p_of_megan2saprcnov( 85) = is_benzaldehyde ; p_of_saprcnov( 85) = p_bald ; saprcnov_per_megan( 85) = 1.000 + p_of_megan2saprcnov( 86) = is_butanone_2 ; p_of_saprcnov( 86) = p_mek ; saprcnov_per_megan( 86) = 1.000 + p_of_megan2saprcnov( 87) = is_decanal ; p_of_saprcnov( 87) = p_rcho ; saprcnov_per_megan( 87) = 1.000 + p_of_megan2saprcnov( 88) = is_dodecene_1 ; p_of_saprcnov( 88) = p_ole1 ; saprcnov_per_megan( 88) = 1.000 + p_of_megan2saprcnov( 89) = is_geranyl_acetone ; p_of_saprcnov( 89) = p_terp ; saprcnov_per_megan( 89) = 1.000 + p_of_megan2saprcnov( 90) = is_heptanal ; p_of_saprcnov( 90) = p_rcho ; saprcnov_per_megan( 90) = 1.000 + p_of_megan2saprcnov( 91) = is_heptane ; p_of_saprcnov( 91) = p_alk5 ; saprcnov_per_megan( 91) = 1.000 + p_of_megan2saprcnov( 92) = is_hexane ; p_of_saprcnov( 92) = p_alk4 ; saprcnov_per_megan( 92) = 1.000 + p_of_megan2saprcnov( 93) = is_met_benzoate ; p_of_saprcnov( 93) = p_aro1 ; saprcnov_per_megan( 93) = 1.000 + p_of_megan2saprcnov( 94) = is_met_heptenone ; p_of_saprcnov( 94) = p_ole2 ; saprcnov_per_megan( 94) = 1.000 + p_of_megan2saprcnov( 95) = is_neryl_acetone ; p_of_saprcnov( 95) = p_ole2 ; saprcnov_per_megan( 95) = 1.000 + p_of_megan2saprcnov( 96) = is_nonanal ; p_of_saprcnov( 96) = p_rcho ; saprcnov_per_megan( 96) = 1.000 + p_of_megan2saprcnov( 97) = is_nonenal ; p_of_saprcnov( 97) = p_ole1 ; saprcnov_per_megan( 97) = 1.000 + p_of_megan2saprcnov( 98) = is_octanal ; p_of_saprcnov( 98) = p_rcho ; saprcnov_per_megan( 98) = 1.000 + p_of_megan2saprcnov( 99) = is_octanol ; p_of_saprcnov( 99) = p_alk5 ; saprcnov_per_megan( 99) = 1.000 + p_of_megan2saprcnov(100) = is_octenol_1e3ol ; p_of_saprcnov(100) = p_ole1 ; saprcnov_per_megan(100) = 1.000 + p_of_megan2saprcnov(101) = is_oxopentanal ; p_of_saprcnov(101) = p_rcho ; saprcnov_per_megan(101) = 1.000 + p_of_megan2saprcnov(102) = is_pentane ; p_of_saprcnov(102) = p_alk4 ; saprcnov_per_megan(102) = 1.000 + p_of_megan2saprcnov(103) = is_phenyl_cco ; p_of_saprcnov(103) = p_aro1 ; saprcnov_per_megan(103) = 1.000 + p_of_megan2saprcnov(104) = is_pyruvic_acid ; p_of_saprcnov(104) = p_rco_oh ; saprcnov_per_megan(104) = 1.000 + p_of_megan2saprcnov(105) = is_terpinyl_act_a ; p_of_saprcnov(105) = p_terp ; saprcnov_per_megan(105) = 1.000 + p_of_megan2saprcnov(106) = is_tetradecene_1 ; p_of_saprcnov(106) = p_ole1 ; saprcnov_per_megan(106) = 1.000 + p_of_megan2saprcnov(107) = is_toluene ; p_of_saprcnov(107) = p_aro1 ; saprcnov_per_megan(107) = 1.000 + p_of_megan2saprcnov(108) = is_carbon_monoxide ; p_of_saprcnov(108) = p_co ; saprcnov_per_megan(108) = 1.000 + p_of_megan2saprcnov(109) = is_butene ; p_of_saprcnov(109) = p_ole1 ; saprcnov_per_megan(109) = 1.000 + p_of_megan2saprcnov(110) = is_ethane ; p_of_saprcnov(110) = p_c2h6 ; saprcnov_per_megan(110) = 1.000 + p_of_megan2saprcnov(111) = is_ethene ; p_of_saprcnov(111) = p_ethene ; saprcnov_per_megan(111) = 1.000 + p_of_megan2saprcnov(112) = is_hydrogen_cyanide ; p_of_saprcnov(112) = non_react ; saprcnov_per_megan(112) = 1.000 + p_of_megan2saprcnov(113) = is_propane ; p_of_saprcnov(113) = p_c3h8 ; saprcnov_per_megan(113) = 1.000 + p_of_megan2saprcnov(114) = is_propene ; p_of_saprcnov(114) = p_c3h6 ; saprcnov_per_megan(114) = 1.000 + p_of_megan2saprcnov(115) = is_carbon_2s ; p_of_saprcnov(115) = non_react ; saprcnov_per_megan(115) = 1.000 + p_of_megan2saprcnov(116) = is_carbonyl_s ; p_of_saprcnov(116) = non_react ; saprcnov_per_megan(116) = 1.000 + p_of_megan2saprcnov(117) = is_diallyl_2s ; p_of_saprcnov(117) = p_ole1 ; saprcnov_per_megan(117) = 1.000 + p_of_megan2saprcnov(118) = is_2met_2s ; p_of_saprcnov(118) = p_alk5 ; saprcnov_per_megan(118) = 1.000 + p_of_megan2saprcnov(119) = is_2met_s ; p_of_saprcnov(119) = p_alk4 ; saprcnov_per_megan(119) = 1.000 + p_of_megan2saprcnov(120) = is_met_chloride ; p_of_saprcnov(120) = non_react ; saprcnov_per_megan(120) = 1.000 + p_of_megan2saprcnov(121) = is_met_bromide ; p_of_saprcnov(121) = non_react ; saprcnov_per_megan(121) = 1.000 + p_of_megan2saprcnov(122) = is_met_iodide ; p_of_saprcnov(122) = non_react ; saprcnov_per_megan(122) = 1.000 + p_of_megan2saprcnov(123) = is_hydrogen_s ; p_of_saprcnov(123) = non_react ; saprcnov_per_megan(123) = 1.000 + p_of_megan2saprcnov(124) = is_met_mercaptan ; p_of_saprcnov(124) = p_alk5 ; saprcnov_per_megan(124) = 1.000 + p_of_megan2saprcnov(125) = is_met_propenyl_2s ; p_of_saprcnov(125) = p_ole1 ; saprcnov_per_megan(125) = 1.000 + p_of_megan2saprcnov(126) = is_pppp_2s ; p_of_saprcnov(126) = p_ole1 ; saprcnov_per_megan(126) = 1.000 + p_of_megan2saprcnov(127) = is_2met_nonatriene ; p_of_saprcnov(127) = p_terp ; saprcnov_per_megan(127) = 1.000 + p_of_megan2saprcnov(128) = is_met_salicylate ; p_of_saprcnov(128) = p_aro1 ; saprcnov_per_megan(128) = 1.000 + p_of_megan2saprcnov(129) = is_indole ; p_of_saprcnov(129) = p_aro2 ; saprcnov_per_megan(129) = 1.000 + p_of_megan2saprcnov(130) = is_jasmone ; p_of_saprcnov(130) = p_terp ; saprcnov_per_megan(130) = 1.000 + p_of_megan2saprcnov(131) = is_met_jasmonate ; p_of_saprcnov(131) = p_terp ; saprcnov_per_megan(131) = 1.000 + p_of_megan2saprcnov(132) = is_3met_3dctt ; p_of_saprcnov(132) = p_terp ; saprcnov_per_megan(132) = 1.000 + p_of_megan2saprcnov(133) = is_hexanal ; p_of_saprcnov(133) = p_rcho ; saprcnov_per_megan(133) = 1.000 + p_of_megan2saprcnov(134) = is_hexanol_1 ; p_of_saprcnov(134) = p_alk5 ; saprcnov_per_megan(134) = 1.000 + p_of_megan2saprcnov(135) = is_hexenal_c3 ; p_of_saprcnov(135) = p_ole2 ; saprcnov_per_megan(135) = 1.000 + p_of_megan2saprcnov(136) = is_hexenal_t2 ; p_of_saprcnov(136) = p_ole2 ; saprcnov_per_megan(136) = 1.000 + p_of_megan2saprcnov(137) = is_hexenol_c3 ; p_of_saprcnov(137) = p_ole2 ; saprcnov_per_megan(137) = 1.000 + p_of_megan2saprcnov(138) = is_hexenyl_act_c3 ; p_of_saprcnov(138) = p_ole2 ; saprcnov_per_megan(138) = 1.000 + END SUBROUTINE get_megan2saprcnov_table + END MODULE module_data_mgn2mech diff --git a/chem/module_data_mosaic_asect.F b/chem/module_data_mosaic_asect.F index 682751c1e8..534739f22c 100644 --- a/chem/module_data_mosaic_asect.F +++ b/chem/module_data_mosaic_asect.F @@ -193,7 +193,7 @@ module module_data_mosaic_asect integer, parameter :: maxd_atype = 1 integer, parameter :: maxd_asize = 8 - integer, parameter :: maxd_acomp = 12 + integer, parameter :: maxd_acomp = 120 ! for additional SOA species changed by Manish Shrivastava on 01/25/10 integer, parameter :: maxd_aphase = 2 integer, save :: ai_phase = -999888777 @@ -234,6 +234,90 @@ module module_data_mosaic_asect integer, save :: mastercompindx_oin_aer = -999888777 integer, save :: mastercompindx_oc_aer = -999888777 integer, save :: mastercompindx_bc_aer = -999888777 + integer, save :: mastercompindx_pcg1_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg2_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg3_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg4_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg5_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg6_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg7_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg8_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg9_b_c_aer = -999888777 + integer, save :: mastercompindx_pcg1_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg2_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg3_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg4_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg5_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg6_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg7_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg8_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg9_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg1_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg2_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg3_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg4_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg5_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg6_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg7_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg8_b_c_aer = -999888777 + integer, save :: mastercompindx_opcg1_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg2_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg3_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg4_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg5_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg6_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg7_b_o_aer = -999888777 + integer, save :: mastercompindx_opcg8_b_o_aer = -999888777 + integer, save :: mastercompindx_pcg1_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg2_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg3_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg4_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg5_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg6_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg7_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg8_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg9_f_c_aer = -999888777 + integer, save :: mastercompindx_pcg1_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg2_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg3_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg4_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg5_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg6_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg7_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg8_f_o_aer = -999888777 + integer, save :: mastercompindx_pcg9_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg1_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg2_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg3_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg4_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg5_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg6_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg7_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg8_f_c_aer = -999888777 + integer, save :: mastercompindx_opcg1_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg2_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg3_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg4_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg5_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg6_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg7_f_o_aer = -999888777 + integer, save :: mastercompindx_opcg8_f_o_aer = -999888777 + integer, save :: mastercompindx_ant1_c_aer = -999888777 + integer, save :: mastercompindx_ant2_c_aer = -999888777 + integer, save :: mastercompindx_ant3_c_aer = -999888777 + integer, save :: mastercompindx_ant4_c_aer = -999888777 + integer, save :: mastercompindx_ant1_o_aer = -999888777 + integer, save :: mastercompindx_ant2_o_aer = -999888777 + integer, save :: mastercompindx_ant3_o_aer = -999888777 + integer, save :: mastercompindx_ant4_o_aer = -999888777 + integer, save :: mastercompindx_biog1_c_aer = -999888777 + integer, save :: mastercompindx_biog2_c_aer = -999888777 + integer, save :: mastercompindx_biog3_c_aer = -999888777 + integer, save :: mastercompindx_biog4_c_aer = -999888777 + integer, save :: mastercompindx_biog1_o_aer = -999888777 + integer, save :: mastercompindx_biog2_o_aer = -999888777 + integer, save :: mastercompindx_biog3_o_aer = -999888777 + integer, save :: mastercompindx_biog4_o_aer = -999888777 real, save :: & @@ -268,7 +352,96 @@ module module_data_mosaic_asect lptr_ca_aer(maxd_asize, maxd_atype, maxd_aphase), & lptr_oin_aer(maxd_asize, maxd_atype, maxd_aphase), & lptr_oc_aer(maxd_asize, maxd_atype, maxd_aphase), & - lptr_bc_aer(maxd_asize, maxd_atype, maxd_aphase) + lptr_bc_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg1_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg2_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg3_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg4_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg5_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg6_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg7_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg8_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg9_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg1_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg2_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg3_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg4_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg5_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg6_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg7_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg8_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg9_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg1_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg2_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg3_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg4_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg5_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg6_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg7_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg8_b_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg1_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg2_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg3_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg4_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg5_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg6_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg7_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg8_b_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg1_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg2_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg3_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg4_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg5_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg6_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg7_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg8_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg9_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg1_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg2_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg3_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg4_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg5_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg6_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg7_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg8_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_pcg9_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg1_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg2_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg3_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg4_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg5_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg6_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg7_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg8_f_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg1_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg2_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg3_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg4_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg5_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg6_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg7_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_opcg8_f_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant1_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant2_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant3_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant4_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant1_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant2_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant3_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_ant4_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog1_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog2_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog3_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog4_c_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog1_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog2_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog3_o_aer(maxd_asize, maxd_atype, maxd_aphase), & + lptr_biog4_o_aer(maxd_asize, maxd_atype, maxd_aphase) + + + + + ! rce 11-sep-2004 - eliminated all of the "..._wrfch" pointers ! so now there is only one set of pointers ("..._amode") @@ -285,9 +458,96 @@ module module_data_mosaic_asect real, parameter :: mw_na_aer = 22.990 real, parameter :: mw_ca_aer = 40.080 real, parameter :: mw_oin_aer = 1.0 - real, parameter :: mw_oc_aer = 1.0 + real, parameter :: mw_oc_aer = 250.0 real, parameter :: mw_bc_aer = 1.0 real, parameter :: mw_water_aer = 18.016 + real, parameter :: mw_pcg1_b_c_aer = 250.0 + real, parameter :: mw_pcg2_b_c_aer = 250.0 + real, parameter :: mw_pcg3_b_c_aer = 250.0 + real, parameter :: mw_pcg4_b_c_aer = 250.0 + real, parameter :: mw_pcg5_b_c_aer = 250.0 + real, parameter :: mw_pcg6_b_c_aer = 250.0 + real, parameter :: mw_pcg7_b_c_aer = 250.0 + real, parameter :: mw_pcg8_b_c_aer = 250.0 + real, parameter :: mw_pcg9_b_c_aer = 250.0 + real, parameter :: mw_pcg1_b_o_aer = 250.0 + real, parameter :: mw_pcg2_b_o_aer = 250.0 + real, parameter :: mw_pcg3_b_o_aer = 250.0 + real, parameter :: mw_pcg4_b_o_aer = 250.0 + real, parameter :: mw_pcg5_b_o_aer = 250.0 + real, parameter :: mw_pcg6_b_o_aer = 250.0 + real, parameter :: mw_pcg7_b_o_aer = 250.0 + real, parameter :: mw_pcg8_b_o_aer = 250.0 + real, parameter :: mw_pcg9_b_o_aer = 250.0 + real, parameter :: mw_opcg1_b_c_aer = 250.0 + real, parameter :: mw_opcg2_b_c_aer = 250.0 + real, parameter :: mw_opcg3_b_c_aer = 250.0 + real, parameter :: mw_opcg4_b_c_aer = 250.0 + real, parameter :: mw_opcg5_b_c_aer = 250.0 + real, parameter :: mw_opcg6_b_c_aer = 250.0 + real, parameter :: mw_opcg7_b_c_aer = 250.0 + real, parameter :: mw_opcg8_b_c_aer = 250.0 + real, parameter :: mw_opcg1_b_o_aer = 250.0 + real, parameter :: mw_opcg2_b_o_aer = 250.0 + real, parameter :: mw_opcg3_b_o_aer = 250.0 + real, parameter :: mw_opcg4_b_o_aer = 250.0 + real, parameter :: mw_opcg5_b_o_aer = 250.0 + real, parameter :: mw_opcg6_b_o_aer = 250.0 + real, parameter :: mw_opcg7_b_o_aer = 250.0 + real, parameter :: mw_opcg8_b_o_aer = 250.0 + real, parameter :: mw_pcg1_f_c_aer = 250.0 + real, parameter :: mw_pcg2_f_c_aer = 250.0 + real, parameter :: mw_pcg3_f_c_aer = 250.0 + real, parameter :: mw_pcg4_f_c_aer = 250.0 + real, parameter :: mw_pcg5_f_c_aer = 250.0 + real, parameter :: mw_pcg6_f_c_aer = 250.0 + real, parameter :: mw_pcg7_f_c_aer = 250.0 + real, parameter :: mw_pcg8_f_c_aer = 250.0 + real, parameter :: mw_pcg9_f_c_aer = 250.0 + real, parameter :: mw_pcg1_f_o_aer = 250.0 + real, parameter :: mw_pcg2_f_o_aer = 250.0 + real, parameter :: mw_pcg3_f_o_aer = 250.0 + real, parameter :: mw_pcg4_f_o_aer = 250.0 + real, parameter :: mw_pcg5_f_o_aer = 250.0 + real, parameter :: mw_pcg6_f_o_aer = 250.0 + real, parameter :: mw_pcg7_f_o_aer = 250.0 + real, parameter :: mw_pcg8_f_o_aer = 250.0 + real, parameter :: mw_pcg9_f_o_aer = 250.0 + real, parameter :: mw_opcg1_f_c_aer = 250.0 + real, parameter :: mw_opcg2_f_c_aer = 250.0 + real, parameter :: mw_opcg3_f_c_aer = 250.0 + real, parameter :: mw_opcg4_f_c_aer = 250.0 + real, parameter :: mw_opcg5_f_c_aer = 250.0 + real, parameter :: mw_opcg6_f_c_aer = 250.0 + real, parameter :: mw_opcg7_f_c_aer = 250.0 + real, parameter :: mw_opcg8_f_c_aer = 250.0 + real, parameter :: mw_opcg1_f_o_aer = 250.0 + real, parameter :: mw_opcg2_f_o_aer = 250.0 + real, parameter :: mw_opcg3_f_o_aer = 250.0 + real, parameter :: mw_opcg4_f_o_aer = 250.0 + real, parameter :: mw_opcg5_f_o_aer = 250.0 + real, parameter :: mw_opcg6_f_o_aer = 250.0 + real, parameter :: mw_opcg7_f_o_aer = 250.0 + real, parameter :: mw_opcg8_f_o_aer = 250.0 + real, parameter :: mw_ant1_c_aer = 250 + real, parameter :: mw_ant2_c_aer = 250 + real, parameter :: mw_ant3_c_aer = 250 + real, parameter :: mw_ant4_c_aer = 250 + real, parameter :: mw_ant1_o_aer = 250 + real, parameter :: mw_ant2_o_aer = 250 + real, parameter :: mw_ant3_o_aer = 250 + real, parameter :: mw_ant4_o_aer = 250 + real, parameter :: mw_biog1_c_aer = 250.0 + real, parameter :: mw_biog2_c_aer = 250.0 + real, parameter :: mw_biog3_c_aer = 250.0 + real, parameter :: mw_biog4_c_aer = 250.0 + real, parameter :: mw_biog1_o_aer = 250.0 + real, parameter :: mw_biog2_o_aer = 250.0 + real, parameter :: mw_biog3_o_aer = 250.0 + real, parameter :: mw_biog4_o_aer = 250.0 + + + ! dry densities (g/cm3) real, parameter :: dens_so4_aer = 1.80 @@ -301,6 +561,92 @@ module module_data_mosaic_asect real, parameter :: dens_oin_aer = 2.60 real, parameter :: dens_oc_aer = 1.00 real, parameter :: dens_bc_aer = 1.70 + real, parameter :: dens_pcg1_b_c_aer = 1.0 + real, parameter :: dens_pcg2_b_c_aer = 1.0 + real, parameter :: dens_pcg3_b_c_aer = 1.0 + real, parameter :: dens_pcg4_b_c_aer = 1.0 + real, parameter :: dens_pcg5_b_c_aer = 1.0 + real, parameter :: dens_pcg6_b_c_aer = 1.0 + real, parameter :: dens_pcg7_b_c_aer = 1.0 + real, parameter :: dens_pcg8_b_c_aer = 1.0 + real, parameter :: dens_pcg9_b_c_aer = 1.0 + real, parameter :: dens_pcg1_b_o_aer = 1.0 + real, parameter :: dens_pcg2_b_o_aer = 1.0 + real, parameter :: dens_pcg3_b_o_aer = 1.0 + real, parameter :: dens_pcg4_b_o_aer = 1.0 + real, parameter :: dens_pcg5_b_o_aer = 1.0 + real, parameter :: dens_pcg6_b_o_aer = 1.0 + real, parameter :: dens_pcg7_b_o_aer = 1.0 + real, parameter :: dens_pcg8_b_o_aer = 1.0 + real, parameter :: dens_pcg9_b_o_aer = 1.0 + real, parameter :: dens_opcg1_b_c_aer = 1.0 + real, parameter :: dens_opcg2_b_c_aer = 1.0 + real, parameter :: dens_opcg3_b_c_aer = 1.0 + real, parameter :: dens_opcg4_b_c_aer = 1.0 + real, parameter :: dens_opcg5_b_c_aer = 1.0 + real, parameter :: dens_opcg6_b_c_aer = 1.0 + real, parameter :: dens_opcg7_b_c_aer = 1.0 + real, parameter :: dens_opcg8_b_c_aer = 1.0 + real, parameter :: dens_opcg1_b_o_aer = 1.0 + real, parameter :: dens_opcg2_b_o_aer = 1.0 + real, parameter :: dens_opcg3_b_o_aer = 1.0 + real, parameter :: dens_opcg4_b_o_aer = 1.0 + real, parameter :: dens_opcg5_b_o_aer = 1.0 + real, parameter :: dens_opcg6_b_o_aer = 1.0 + real, parameter :: dens_opcg7_b_o_aer = 1.0 + real, parameter :: dens_opcg8_b_o_aer = 1.0 + real, parameter :: dens_pcg1_f_c_aer = 1.0 + real, parameter :: dens_pcg2_f_c_aer = 1.0 + real, parameter :: dens_pcg3_f_c_aer = 1.0 + real, parameter :: dens_pcg4_f_c_aer = 1.0 + real, parameter :: dens_pcg5_f_c_aer = 1.0 + real, parameter :: dens_pcg6_f_c_aer = 1.0 + real, parameter :: dens_pcg7_f_c_aer = 1.0 + real, parameter :: dens_pcg8_f_c_aer = 1.0 + real, parameter :: dens_pcg9_f_c_aer = 1.0 + real, parameter :: dens_pcg1_f_o_aer = 1.0 + real, parameter :: dens_pcg2_f_o_aer = 1.0 + real, parameter :: dens_pcg3_f_o_aer = 1.0 + real, parameter :: dens_pcg4_f_o_aer = 1.0 + real, parameter :: dens_pcg5_f_o_aer = 1.0 + real, parameter :: dens_pcg6_f_o_aer = 1.0 + real, parameter :: dens_pcg7_f_o_aer = 1.0 + real, parameter :: dens_pcg8_f_o_aer = 1.0 + real, parameter :: dens_pcg9_f_o_aer = 1.0 + real, parameter :: dens_opcg1_f_c_aer = 1.0 + real, parameter :: dens_opcg2_f_c_aer = 1.0 + real, parameter :: dens_opcg3_f_c_aer = 1.0 + real, parameter :: dens_opcg4_f_c_aer = 1.0 + real, parameter :: dens_opcg5_f_c_aer = 1.0 + real, parameter :: dens_opcg6_f_c_aer = 1.0 + real, parameter :: dens_opcg7_f_c_aer = 1.0 + real, parameter :: dens_opcg8_f_c_aer = 1.0 + real, parameter :: dens_opcg1_f_o_aer = 1.0 + real, parameter :: dens_opcg2_f_o_aer = 1.0 + real, parameter :: dens_opcg3_f_o_aer = 1.0 + real, parameter :: dens_opcg4_f_o_aer = 1.0 + real, parameter :: dens_opcg5_f_o_aer = 1.0 + real, parameter :: dens_opcg6_f_o_aer = 1.0 + real, parameter :: dens_opcg7_f_o_aer = 1.0 + real, parameter :: dens_opcg8_f_o_aer = 1.0 + real, parameter :: dens_ant1_c_aer = 1.0 + real, parameter :: dens_ant2_c_aer = 1.0 + real, parameter :: dens_ant3_c_aer = 1.0 + real, parameter :: dens_ant4_c_aer = 1.0 + real, parameter :: dens_ant1_o_aer = 1.0 + real, parameter :: dens_ant2_o_aer = 1.0 + real, parameter :: dens_ant3_o_aer = 1.0 + real, parameter :: dens_ant4_o_aer = 1.0 + real, parameter :: dens_biog1_c_aer = 1.0 + real, parameter :: dens_biog2_c_aer = 1.0 + real, parameter :: dens_biog3_c_aer = 1.0 + real, parameter :: dens_biog4_c_aer = 1.0 + real, parameter :: dens_biog1_o_aer = 1.0 + real, parameter :: dens_biog2_o_aer = 1.0 + real, parameter :: dens_biog3_o_aer = 1.0 + real, parameter :: dens_biog4_o_aer = 1.0 + + ! water density (g/cm3) ! real, parameter :: dens_water_asize = 1.0 @@ -318,6 +664,91 @@ module module_data_mosaic_asect real, parameter :: hygro_oin_aer = 0.14 real, parameter :: hygro_oc_aer = 0.14 real, parameter :: hygro_bc_aer = 1.e-6 + real, parameter :: hygro_pcg1_b_c_aer = 0.14 + real, parameter :: hygro_pcg2_b_c_aer = 0.14 + real, parameter :: hygro_pcg3_b_c_aer = 0.14 + real, parameter :: hygro_pcg4_b_c_aer = 0.14 + real, parameter :: hygro_pcg5_b_c_aer = 0.14 + real, parameter :: hygro_pcg6_b_c_aer = 0.14 + real, parameter :: hygro_pcg7_b_c_aer = 0.14 + real, parameter :: hygro_pcg8_b_c_aer = 0.14 + real, parameter :: hygro_pcg9_b_c_aer = 0.14 + real, parameter :: hygro_pcg1_b_o_aer = 0.14 + real, parameter :: hygro_pcg2_b_o_aer = 0.14 + real, parameter :: hygro_pcg3_b_o_aer = 0.14 + real, parameter :: hygro_pcg4_b_o_aer = 0.14 + real, parameter :: hygro_pcg5_b_o_aer = 0.14 + real, parameter :: hygro_pcg6_b_o_aer = 0.14 + real, parameter :: hygro_pcg7_b_o_aer = 0.14 + real, parameter :: hygro_pcg8_b_o_aer = 0.14 + real, parameter :: hygro_pcg9_b_o_aer = 0.14 + real, parameter :: hygro_opcg1_b_c_aer = 0.14 + real, parameter :: hygro_opcg2_b_c_aer = 0.14 + real, parameter :: hygro_opcg3_b_c_aer = 0.14 + real, parameter :: hygro_opcg4_b_c_aer = 0.14 + real, parameter :: hygro_opcg5_b_c_aer = 0.14 + real, parameter :: hygro_opcg6_b_c_aer = 0.14 + real, parameter :: hygro_opcg7_b_c_aer = 0.14 + real, parameter :: hygro_opcg8_b_c_aer = 0.14 + real, parameter :: hygro_opcg1_b_o_aer = 0.14 + real, parameter :: hygro_opcg2_b_o_aer = 0.14 + real, parameter :: hygro_opcg3_b_o_aer = 0.14 + real, parameter :: hygro_opcg4_b_o_aer = 0.14 + real, parameter :: hygro_opcg5_b_o_aer = 0.14 + real, parameter :: hygro_opcg6_b_o_aer = 0.14 + real, parameter :: hygro_opcg7_b_o_aer = 0.14 + real, parameter :: hygro_opcg8_b_o_aer = 0.14 + real, parameter :: hygro_pcg1_f_c_aer = 0.14 + real, parameter :: hygro_pcg2_f_c_aer = 0.14 + real, parameter :: hygro_pcg3_f_c_aer = 0.14 + real, parameter :: hygro_pcg4_f_c_aer = 0.14 + real, parameter :: hygro_pcg5_f_c_aer = 0.14 + real, parameter :: hygro_pcg6_f_c_aer = 0.14 + real, parameter :: hygro_pcg7_f_c_aer = 0.14 + real, parameter :: hygro_pcg8_f_c_aer = 0.14 + real, parameter :: hygro_pcg9_f_c_aer = 0.14 + real, parameter :: hygro_pcg1_f_o_aer = 0.14 + real, parameter :: hygro_pcg2_f_o_aer = 0.14 + real, parameter :: hygro_pcg3_f_o_aer = 0.14 + real, parameter :: hygro_pcg4_f_o_aer = 0.14 + real, parameter :: hygro_pcg5_f_o_aer = 0.14 + real, parameter :: hygro_pcg6_f_o_aer = 0.14 + real, parameter :: hygro_pcg7_f_o_aer = 0.14 + real, parameter :: hygro_pcg8_f_o_aer = 0.14 + real, parameter :: hygro_pcg9_f_o_aer = 0.14 + real, parameter :: hygro_opcg1_f_c_aer = 0.14 + real, parameter :: hygro_opcg2_f_c_aer = 0.14 + real, parameter :: hygro_opcg3_f_c_aer = 0.14 + real, parameter :: hygro_opcg4_f_c_aer = 0.14 + real, parameter :: hygro_opcg5_f_c_aer = 0.14 + real, parameter :: hygro_opcg6_f_c_aer = 0.14 + real, parameter :: hygro_opcg7_f_c_aer = 0.14 + real, parameter :: hygro_opcg8_f_c_aer = 0.14 + real, parameter :: hygro_opcg1_f_o_aer = 0.14 + real, parameter :: hygro_opcg2_f_o_aer = 0.14 + real, parameter :: hygro_opcg3_f_o_aer = 0.14 + real, parameter :: hygro_opcg4_f_o_aer = 0.14 + real, parameter :: hygro_opcg5_f_o_aer = 0.14 + real, parameter :: hygro_opcg6_f_o_aer = 0.14 + real, parameter :: hygro_opcg7_f_o_aer = 0.14 + real, parameter :: hygro_opcg8_f_o_aer = 0.14 + real, parameter :: hygro_ant1_c_aer = 0.14 + real, parameter :: hygro_ant2_c_aer = 0.14 + real, parameter :: hygro_ant3_c_aer = 0.14 + real, parameter :: hygro_ant4_c_aer = 0.14 + real, parameter :: hygro_ant1_o_aer = 0.14 + real, parameter :: hygro_ant2_o_aer = 0.14 + real, parameter :: hygro_ant3_o_aer = 0.14 + real, parameter :: hygro_ant4_o_aer = 0.14 + real, parameter :: hygro_biog1_c_aer = 0.14 + real, parameter :: hygro_biog2_c_aer = 0.14 + real, parameter :: hygro_biog3_c_aer = 0.14 + real, parameter :: hygro_biog4_c_aer = 0.14 + real, parameter :: hygro_biog1_o_aer = 0.14 + real, parameter :: hygro_biog2_o_aer = 0.14 + real, parameter :: hygro_biog3_o_aer = 0.14 + real, parameter :: hygro_biog4_o_aer = 0.14 + integer, save :: & diff --git a/chem/module_data_mosaic_other.F b/chem/module_data_mosaic_other.F index ebe3f559be..965c73fea4 100644 --- a/chem/module_data_mosaic_other.F +++ b/chem/module_data_mosaic_other.F @@ -23,7 +23,7 @@ module module_data_mosaic_other integer, parameter :: imaxd=1, jmaxd=1, kmaxd=100 - integer, parameter :: lmaxd=283, l2maxd=283 + integer, parameter :: lmaxd=1200, l2maxd=1200 ! increased from 300 to 400 by Manish Shrivastava on 01/25/10 for additional soa gas species integer, parameter :: nsubareamaxd = 1 @@ -39,6 +39,96 @@ module module_data_mosaic_other integer, save :: ko3 = -999888777 integer, save :: kh2o = -999888777 integer, save :: ktemp = -999888777 + integer, save :: kpcg1_b_c = -999888777 + integer, save :: kpcg2_b_c = -999888777 + integer, save :: kpcg3_b_c = -999888777 + integer, save :: kpcg4_b_c = -999888777 + integer, save :: kpcg5_b_c = -999888777 + integer, save :: kpcg6_b_c = -999888777 + integer, save :: kpcg7_b_c = -999888777 + integer, save :: kpcg8_b_c = -999888777 + integer, save :: kpcg9_b_c = -999888777 + integer, save :: kpcg1_b_o = -999888777 + integer, save :: kpcg2_b_o = -999888777 + integer, save :: kpcg3_b_o = -999888777 + integer, save :: kpcg4_b_o = -999888777 + integer, save :: kpcg5_b_o = -999888777 + integer, save :: kpcg6_b_o = -999888777 + integer, save :: kpcg7_b_o = -999888777 + integer, save :: kpcg8_b_o = -999888777 + integer, save :: kpcg9_b_o = -999888777 + integer, save :: kopcg1_b_c = -999888777 + integer, save :: kopcg2_b_c = -999888777 + integer, save :: kopcg3_b_c = -999888777 + integer, save :: kopcg4_b_c = -999888777 + integer, save :: kopcg5_b_c = -999888777 + integer, save :: kopcg6_b_c = -999888777 + integer, save :: kopcg7_b_c = -999888777 + integer, save :: kopcg8_b_c = -999888777 + integer, save :: kopcg1_b_o = -999888777 + integer, save :: kopcg2_b_o = -999888777 + integer, save :: kopcg3_b_o = -999888777 + integer, save :: kopcg4_b_o = -999888777 + integer, save :: kopcg5_b_o = -999888777 + integer, save :: kopcg6_b_o = -999888777 + integer, save :: kopcg7_b_o = -999888777 + integer, save :: kopcg8_b_o = -999888777 + integer, save :: kpcg1_f_c = -999888777 + integer, save :: kpcg2_f_c = -999888777 + integer, save :: kpcg3_f_c = -999888777 + integer, save :: kpcg4_f_c = -999888777 + integer, save :: kpcg5_f_c = -999888777 + integer, save :: kpcg6_f_c = -999888777 + integer, save :: kpcg7_f_c = -999888777 + integer, save :: kpcg8_f_c = -999888777 + integer, save :: kpcg9_f_c = -999888777 + integer, save :: kpcg1_f_o = -999888777 + integer, save :: kpcg2_f_o = -999888777 + integer, save :: kpcg3_f_o = -999888777 + integer, save :: kpcg4_f_o = -999888777 + integer, save :: kpcg5_f_o = -999888777 + integer, save :: kpcg6_f_o = -999888777 + integer, save :: kpcg7_f_o = -999888777 + integer, save :: kpcg8_f_o = -999888777 + integer, save :: kpcg9_f_o = -999888777 + integer, save :: kopcg1_f_c = -999888777 + integer, save :: kopcg2_f_c = -999888777 + integer, save :: kopcg3_f_c = -999888777 + integer, save :: kopcg4_f_c = -999888777 + integer, save :: kopcg5_f_c = -999888777 + integer, save :: kopcg6_f_c = -999888777 + integer, save :: kopcg7_f_c = -999888777 + integer, save :: kopcg8_f_c = -999888777 + integer, save :: kopcg1_f_o = -999888777 + integer, save :: kopcg2_f_o = -999888777 + integer, save :: kopcg3_f_o = -999888777 + integer, save :: kopcg4_f_o = -999888777 + integer, save :: kopcg5_f_o = -999888777 + integer, save :: kopcg6_f_o = -999888777 + integer, save :: kopcg7_f_o = -999888777 + integer, save :: kopcg8_f_o = -999888777 + integer, save :: kant1_c = -999888777 + integer, save :: kant2_c = -999888777 + integer, save :: kant3_c = -999888777 + integer, save :: kant4_c = -999888777 + integer, save :: kant1_o = -999888777 + integer, save :: kant2_o = -999888777 + integer, save :: kant3_o = -999888777 + integer, save :: kant4_o = -999888777 + integer, save :: kbiog1_c = -999888777 + integer, save :: kbiog2_c = -999888777 + integer, save :: kbiog3_c = -999888777 + integer, save :: kbiog4_c = -999888777 + integer, save :: kbiog1_o = -999888777 + integer, save :: kbiog2_o = -999888777 + integer, save :: kbiog3_o = -999888777 + integer, save :: kbiog4_o = -999888777 + + + + + + ! rce 2005-apr-12 - added for cldchem - kso2, kh2o2, khcho, khcooh, ! koh, kho2, kno3, kno, kno2, khono, kpan, kch3o2, kch3oh, kch3ooh diff --git a/chem/module_data_mosaic_therm.F b/chem/module_data_mosaic_therm.F index 49ee29aeca..a3defeee6b 100644 --- a/chem/module_data_mosaic_therm.F +++ b/chem/module_data_mosaic_therm.F @@ -42,10 +42,10 @@ module module_data_mosaic_therm naer, naercomp, nelectrolyte, nsalt, & nsoluble, ncation, nanion parameter(ngas_ioa = 5) ! inorganic volatile aerosol species that have a gaseous counterpart - parameter(ngas_soa = 8) ! volatile soa species that have a gaseous counterpart + parameter(ngas_soa = 68+16) ! volatile soa species that have a gaseous counterpart parameter(ngas_volatile = ngas_ioa + ngas_soa) - parameter(naer = 19) ! num of chemical species per bin (inorg + oc + bc + oin + soa) - parameter(naercomp = 34) ! num of electrolytes + oc, bc, oin, & soa + parameter(naer = 11+68+16) ! num of chemical species per bin (inorg + oc + bc + oin + soa) + parameter(naercomp = 26+68+16) ! num of electrolytes + oc, bc, oin, & soa parameter(nelectrolyte = 22) ! num of electrolytes parameter(nsalt = 15) ! num of soluble salts parameter(nsoluble = 20) ! num of soluble electrolytes @@ -97,16 +97,66 @@ module module_data_mosaic_therm ! gas integer, save :: & ih2so4_g, ihno3_g, ihcl_g, inh3_g, & - imsa_g, & - iaro1_g, iaro2_g, ialk1_g, iole1_g, & - iapi1_g, iapi2_g, ilim1_g, ilim2_g + imsa_g + + integer, save :: & + ipcg1_b_c_g,ipcg2_b_c_g,ipcg3_b_c_g,ipcg4_b_c_g, & + ipcg5_b_c_g,ipcg6_b_c_g,ipcg7_b_c_g,ipcg8_b_c_g, & + ipcg9_b_c_g,ipcg1_b_o_g,ipcg2_b_o_g,ipcg3_b_o_g, & + ipcg4_b_o_g,ipcg5_b_o_g,ipcg6_b_o_g,ipcg7_b_o_g, & + ipcg8_b_o_g,ipcg9_b_o_g,iopcg1_b_c_g,iopcg2_b_c_g,& + iopcg3_b_c_g, iopcg4_b_c_g,iopcg5_b_c_g,iopcg6_b_c_g,& + iopcg7_b_c_g,iopcg8_b_c_g,iopcg1_b_o_g,iopcg2_b_o_g,& + iopcg3_b_o_g,iopcg4_b_o_g,iopcg5_b_o_g,iopcg6_b_o_g,& + iopcg7_b_o_g,iopcg8_b_o_g,& + ipcg1_f_c_g,ipcg2_f_c_g,ipcg3_f_c_g,ipcg4_f_c_g, & + ipcg5_f_c_g,ipcg6_f_c_g,ipcg7_f_c_g,ipcg8_f_c_g, & + ipcg9_f_c_g,ipcg1_f_o_g,ipcg2_f_o_g,ipcg3_f_o_g, & + ipcg4_f_o_g,ipcg5_f_o_g,ipcg6_f_o_g,ipcg7_f_o_g, & + ipcg8_f_o_g,ipcg9_f_o_g,iopcg1_f_c_g,iopcg2_f_c_g,& + iopcg3_f_c_g, iopcg4_f_c_g,iopcg5_f_c_g,iopcg6_f_c_g,& + iopcg7_f_c_g,iopcg8_f_c_g,iopcg1_f_o_g,iopcg2_f_o_g,& + iopcg3_f_o_g,iopcg4_f_o_g,iopcg5_f_o_g,iopcg6_f_o_g,& + iopcg7_f_o_g,iopcg8_f_o_g,iant1_c_g,iant2_c_g,iant3_c_g, & + iant4_c_g,ibiog1_c_g,ibiog2_c_g,ibiog3_c_g,ibiog4_c_g, & + iant1_o_g,iant2_o_g,iant3_o_g, & + iant4_o_g,ibiog1_o_g,ibiog2_o_g,ibiog3_o_g,ibiog4_o_g + + + ! aerosol generic integer, save :: & iso4_a, ino3_a, icl_a, inh4_a, ico3_a, & imsa_a, ina_a, ica_a, ioc_a, ibc_a, & - ioin_a, iaro1_a, iaro2_a, ialk1_a, iole1_a, & - iapi1_a, iapi2_a, ilim1_a, ilim2_a + ioin_a + + integer, save :: & + ipcg1_b_c_a,ipcg2_b_c_a,ipcg3_b_c_a,ipcg4_b_c_a, & + ipcg5_b_c_a,ipcg6_b_c_a,ipcg7_b_c_a,ipcg8_b_c_a, & + ipcg9_b_c_a,ipcg1_b_o_a,ipcg2_b_o_a,ipcg3_b_o_a, & + ipcg4_b_o_a,ipcg5_b_o_a,ipcg6_b_o_a,ipcg7_b_o_a, & + ipcg8_b_o_a,ipcg9_b_o_a,iopcg1_b_c_a,iopcg2_b_c_a,& + iopcg3_b_c_a, iopcg4_b_c_a,iopcg5_b_c_a,iopcg6_b_c_a,& + iopcg7_b_c_a,iopcg8_b_c_a,iopcg1_b_o_a,iopcg2_b_o_a,& + iopcg3_b_o_a,iopcg4_b_o_a,iopcg5_b_o_a,iopcg6_b_o_a,& + iopcg7_b_o_a,iopcg8_b_o_a,& + ipcg1_f_c_a,ipcg2_f_c_a,ipcg3_f_c_a,ipcg4_f_c_a, & + ipcg5_f_c_a,ipcg6_f_c_a,ipcg7_f_c_a,ipcg8_f_c_a, & + ipcg9_f_c_a,ipcg1_f_o_a,ipcg2_f_o_a,ipcg3_f_o_a, & + ipcg4_f_o_a,ipcg5_f_o_a,ipcg6_f_o_a,ipcg7_f_o_a, & + ipcg8_f_o_a,ipcg9_f_o_a,iopcg1_f_c_a,iopcg2_f_c_a,& + iopcg3_f_c_a, iopcg4_f_c_a,iopcg5_f_c_a,iopcg6_f_c_a,& + iopcg7_f_c_a,iopcg8_f_c_a,iopcg1_f_o_a,iopcg2_f_o_a,& + iopcg3_f_o_a,iopcg4_f_o_a,iopcg5_f_o_a,iopcg6_f_o_a,& + iopcg7_f_o_a,iopcg8_f_o_a, & + iant1_c_a,iant2_c_a,iant3_c_a, & + iant4_c_a,ibiog1_c_a,ibiog2_c_a,ibiog3_c_a,ibiog4_c_a, & + iant1_o_a,iant2_o_a,iant3_o_a, & + iant4_o_a,ibiog1_o_a,ibiog2_o_a,ibiog3_o_a,ibiog4_o_a + + + ! aerosol elecctrolytes/compounds integer, save :: & @@ -115,9 +165,34 @@ module module_data_mosaic_therm jcaso4, jcano3, jcacl2, jcaco3, jh2so4, & jhno3, jhcl, jhhso4, & jnh4msa, jnamsa, jcamsa2, jmsa, & - joc, jbc, join, jaro1, jaro2, & - jalk1, jole1, japi1, japi2, jlim1, & - jlim2, jh2o + joc, jbc, join, jh2o + + integer, save :: & + jpcg1_b_c,jpcg2_b_c,jpcg3_b_c,jpcg4_b_c, & + jpcg5_b_c,jpcg6_b_c,jpcg7_b_c,jpcg8_b_c, & + jpcg9_b_c,jpcg1_b_o,jpcg2_b_o,jpcg3_b_o, & + jpcg4_b_o,jpcg5_b_o,jpcg6_b_o,jpcg7_b_o, & + jpcg8_b_o,jpcg9_b_o,jopcg1_b_c,jopcg2_b_c,& + jopcg3_b_c, jopcg4_b_c,jopcg5_b_c,jopcg6_b_c,& + jopcg7_b_c,jopcg8_b_c,jopcg1_b_o,jopcg2_b_o,& + jopcg3_b_o,jopcg4_b_o,jopcg5_b_o,jopcg6_b_o,& + jopcg7_b_o,jopcg8_b_o,& + jpcg1_f_c,jpcg2_f_c,jpcg3_f_c,jpcg4_f_c, & + jpcg5_f_c,jpcg6_f_c,jpcg7_f_c,jpcg8_f_c, & + jpcg9_f_c,jpcg1_f_o,jpcg2_f_o,jpcg3_f_o, & + jpcg4_f_o,jpcg5_f_o,jpcg6_f_o,jpcg7_f_o, & + jpcg8_f_o,jpcg9_f_o,jopcg1_f_c,jopcg2_f_c,& + jopcg3_f_c, jopcg4_f_c,jopcg5_f_c,jopcg6_f_c,& + jopcg7_f_c,jopcg8_f_c,jopcg1_f_o,jopcg2_f_o,& + jopcg3_f_o,jopcg4_f_o,jopcg5_f_o,jopcg6_f_o,& + jopcg7_f_o,jopcg8_f_o, & + jant1_c,jant2_c,jant3_c, & + jant4_c,jbiog1_c,jbiog2_c,jbiog3_c,jbiog4_c, & + jant1_o,jant2_o,jant3_o, & + jant4_o,jbiog1_o,jbiog2_o,jbiog3_o,jbiog4_o + + + ! aerosol ions integer, save :: & @@ -212,12 +287,15 @@ module module_data_mosaic_therm idry_case3a(nbin_a_maxd), & ! mYES, mNO ieqblm_bin(nbin_a_maxd), & ! myes, mno ieqblm_astem, & ! myes, mno + ieqblm_soa, & ! mYES, mNO nastem_call, & ! nastem_fail, & ! isteps_astem, & ! nsteps_astem, & ! + isteps_SOA, & nsteps_astem_max, & ! nmax_ASTEM, & ! + flagsoap(ngas_soa), & ! Added by Manish Shrivastav on 01/11/10 integrate(ngas_volatile,3,nbin_a_maxd) ! mYES, mNO @@ -228,10 +306,13 @@ module module_data_mosaic_therm sfc_a(ngas_volatile), & ! nmol/m^3 Heff(ngas_volatile,nbin_a_maxd), & ! kg(ngas_volatile,nbin_a_maxd), & ! 1/s + fraceq(ngas_volatile,nbin_a_maxd), & ! 1/s df_gas_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (g-g*) = driving force) df_gas_l(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (g-g*) = driving force) + df_gas_o(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (G-G*) = driving force) flux_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s flux_l(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s + flux_o(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s sumkg_h2so4, & ! 1/s sumkg_msa, & ! 1/s sumkg_nh3, & ! 1/s @@ -247,6 +328,7 @@ module module_data_mosaic_therm volatile_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 phi_volatile_s(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g phi_volatile_l(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g + phi_volatile_o(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g phi_nh4no3_s, & ! relative dr. force: 0 to 1 phi_nh4cl_s, & ! relative dr. force: 0 to 1 sum_vdf_s(ngas_volatile), & ! (nmol/m^3)^2 diff --git a/chem/module_data_rrtmgaeropt.F b/chem/module_data_rrtmgaeropt.F new file mode 100644 index 0000000000..05fa64fb42 --- /dev/null +++ b/chem/module_data_rrtmgaeropt.F @@ -0,0 +1,129 @@ + +MODULE module_data_rrtmgaeropt +! + IMPLICIT NONE + INTEGER nswbands,nlwbands ! wave bands for rrtmg radiation scheme + PARAMETER (nswbands =4,nlwbands=16) + +!************************************************************* +!czhao hard coding the refractive index of water and aerosols + !water + real,dimension(1:nswbands),save :: refrwsw,refiwsw + real,dimension(1:nlwbands),save :: refrwlw,refiwlw + data refrwsw /1.35,1.34,1.33,1.33/ + data refiwsw /1.524e-8,2.494e-9,1.638e-9,3.128e-6/ + data refrwlw /1.532,1.524,1.420,1.274,1.161,1.142,1.232,1.266,1.296, & + 1.321,1.342,1.315,1.330,1.339,1.350,1.408/ + data refiwlw / 0.336,0.360,0.426,0.403,0.321,0.115,0.0471,0.039,0.034, & + 0.0344,0.092,0.012,0.013,0.01,0.0049,0.0142/ + + !dust + real,dimension(1:nswbands),save :: refrsw_dust,refisw_dust + real,dimension(1:nlwbands),save :: refrlw_dust,refilw_dust + !data refrsw_dust /nswbands*1.530/ + data refrsw_dust /nswbands*1.550/ +! data refisw_dust /0.024,0.0135,0.0063,0.004/ + data refisw_dust /nswbands*0.003/ + data refrlw_dust /2.340,2.904,1.748,1.508,1.911,1.822,2.917,1.557, & + 1.242,1.447,1.432,1.473,1.495,1.5,1.5,1.51/ + data refilw_dust /0.7,0.857,0.462,0.263,0.319,0.26,0.65,0.373,0.093, & + 0.105,0.061,0.0245,0.011,0.008,0.0068,0.018/ + + !BC + real,dimension(1:nswbands),save :: refrsw_bc,refisw_bc + real,dimension(1:nlwbands),save :: refrlw_bc,refilw_bc + data refrsw_bc /nswbands*1.95/ + data refisw_bc /nswbands*0.79/ + data refrlw_bc /nlwbands*1.95/ + data refilw_bc /nlwbands*0.79/ + + !OC + real,dimension(1:nswbands),save :: refrsw_oc,refisw_oc + real,dimension(1:nlwbands),save :: refrlw_oc,refilw_oc + !data refrsw_oc /1.53,1.53,1.53,1.52/ + data refrsw_oc /nswbands*1.45/ + !data refisw_oc /0.00776,0.005,0.00567,0.0156/ + data refisw_oc /nswbands*0.0/ + data refrlw_oc /1.86,1.91,1.988,1.439,1.606,1.7,1.888,2.489,1.219, & + 1.419,1.426,1.446,1.457,1.458,1.455,1.443/ + data refilw_oc /0.5,0.268,0.185,0.198,0.059,0.0488,0.11,0.3345,0.065, & + 0.058,0.0261,0.0142,0.013,0.01,0.005,0.0057/ + + !Sea-salt + real,dimension(1:nswbands),save :: refrsw_seas,refisw_seas + real,dimension(1:nlwbands),save :: refrlw_seas,refilw_seas + data refrsw_seas /1.51,1.5,1.5,1.47/ + data refisw_seas /0.866e-6,7.019e-8,1.184e-8,0.00015/ + data refrlw_seas /1.74,1.76,1.78,1.456,1.41,1.48,1.56,1.63,1.4,1.43, & + 1.56,1.45,1.485,1.486,1.48,1.48 / + data refilw_seas /0.1978,0.1978,0.129,0.038,0.019,0.014,0.016,0.03,0.012, & + 0.0064,0.0196,0.0029,0.0017,0.0014,0.0014,0.00176/ + + !Sulfate + real,dimension(1:nswbands),save :: refrsw_sulf,refisw_sulf + real,dimension(1:nlwbands),save :: refrlw_sulf,refilw_sulf + !data refrsw_sulf /1.468,1.442,1.43,1.422/ + data refrsw_sulf /nswbands*1.52/ + data refisw_sulf /3*1.0e-9,1.75e-6/ + data refrlw_sulf /1.89,1.91,1.93,1.586,1.678,1.758,1.855,1.597,1.15, & + 1.26,1.42,1.35,1.379,1.385,1.385,1.367/ + data refilw_sulf /0.22,0.152,0.0846,0.2225,0.195,0.441,0.696,0.695, & + 0.459,0.161,0.172,0.14,0.12,0.122,0.126,0.158/ + +!************************************************************* + !wavelength + real, save :: wavmin(nswbands) ! Min wavelength (um) of interval + !data wavmin /3.077,2.500,2.150,1.942,1.626,1.299, & + data wavmin /0.25,0.35,0.55,0.998/ + real, save :: wavmax(nswbands) ! Max wavelength (um) of interval + !data wavmax/3.846,3.077,2.500,2.150,1.942,1.626, & + data wavmax/0.35,0.45,0.65,1.000/ + real, save :: wavenumber1_longwave(nlwbands) !Longwave limits (cm-1) + data wavenumber1_longwave /10.,350.,500.,630.,700.,820.,980.,1080.,1180.,1390.,1480.,1800.,2080.,2250.,2390.,2600./ + real, save :: wavenumber2_longwave(nlwbands) !Longwave limits (cm-1) + data wavenumber2_longwave /350.,500.,630.,700.,820.,980.,1080.,1180.,1390.,1480.,1800.,2080., 2250.,2390.,2600.,3250./ + + !mode or size bin + integer,parameter :: maxd_amode=3 + integer,parameter :: ntot_amode=3 + integer,parameter :: maxd_bin=8 + integer,parameter :: ntot_bin=8 + + !Chebychev polynomial + !integer,parameter :: prefr=7,prefi=10 + integer,parameter :: prefr=7,prefi=7 + integer,parameter :: ncoef=50 + real,parameter :: rmmin=0.005e-4,rmmax=50.e-4 ! cm + real,save:: refrtabsw(prefr,nswbands) + real,save:: refitabsw(prefi,nswbands) + real,save:: refrtablw(prefr,nlwbands) + real,save:: refitablw(prefi,nlwbands) + !coefficients for parameterizing aerosol radiative properties + !in terms of refractive index and wet radius + real,save:: extpsw(ncoef,prefr,prefi,nswbands) !specific extinction + real,save:: abspsw(ncoef,prefr,prefi,nswbands) !specific absorption + real,save:: ascatpsw(ncoef,prefr,prefi,nswbands) !specific scattering + real,save:: asmpsw(ncoef,prefr,prefi,nswbands) !asymmetry factor + real,save:: sbackpsw(ncoef,prefr,prefi,nswbands) + real,save:: pmom2psw(ncoef,prefr,prefi,nswbands) + real,save:: pmom3psw(ncoef,prefr,prefi,nswbands) + real,save:: pmom4psw(ncoef,prefr,prefi,nswbands) + real,save:: pmom5psw(ncoef,prefr,prefi,nswbands) + real,save:: pmom6psw(ncoef,prefr,prefi,nswbands) + real,save:: pmom7psw(ncoef,prefr,prefi,nswbands) + real,save:: extplw(ncoef,prefr,prefi,nlwbands) !specific extinction + real,save:: absplw(ncoef,prefr,prefi,nlwbands) !specific absorption + real,save:: ascatplw(ncoef,prefr,prefi,nlwbands) !specific scattering + real,save:: asmplw(ncoef,prefr,prefi,nlwbands) !asymmetry factor + + real,save :: wavmidsw(nswbands) + data wavmidsw / 0.30e-4, 0.40e-4, 0.60e-4 ,0.999e-04 / + !now czhao use 0.45 instead of 0.40 becaues of incorrect AOD from 0.40 + !data wavmidsw / 0.30e-4, 0.45e-4, 0.60e-4 ,0.999e-04 / + real,save :: wavmidlw(nlwbands) + complex, save :: crefwsw(nswbands) ! complex refractive index fro water + complex, save :: crefwlw(nlwbands) + + + +END MODULE module_data_rrtmgaeropt diff --git a/chem/module_data_sorgam.F b/chem/module_data_sorgam.F index 6c2cccf973..ce1014ef58 100644 --- a/chem/module_data_sorgam.F +++ b/chem/module_data_sorgam.F @@ -1163,7 +1163,7 @@ MODULE module_data_sorgam real, parameter :: mw_so4_aer = 96.066 real, parameter :: mw_no3_aer = 62.007 real, parameter :: mw_nh4_aer = 18.042 - real, parameter :: mw_oc_aer = 1.0 + real, parameter :: mw_oc_aer = 250.0 real, parameter :: mw_ec_aer = 1.0 real, parameter :: mw_oin_aer = 1.0 real, parameter :: mw_dust_aer = 100.087 diff --git a/chem/module_dep_simple.F b/chem/module_dep_simple.F index 03f7da968b..9166fae9f9 100755 --- a/chem/module_dep_simple.F +++ b/chem/module_dep_simple.F @@ -79,7 +79,7 @@ SUBROUTINE wesely_driver( id, ktau, dtstep, config_flags, current_month, & USE module_configure USE module_state_description USE module_data_sorgam - + USE module_state_description, only: param_first_scalar INTEGER, INTENT(IN ) :: id,julday, & numgas, current_month, & ids,ide, jds,jde, kds,kde, & @@ -236,7 +236,7 @@ SUBROUTINE wesely_driver( id, ktau, dtstep, config_flags, current_month, & numgas, srfres, aer_res_def(i,j), aer_res_zcen(i,j), p_sulf ) !----------------------------------------------------------- -!wig: CMBZ does not have HO and HO2 last so need to copy all species +!wig: CBMZ does not have HO and HO2 last so need to copy all species ! ddvel(i,j,1:numgas-2)=ddvel0d(1:numgas-2) !----------------------------------------------------------- ddvel(i,j,1:numgas) = ddvel0d(1:numgas) @@ -256,6 +256,7 @@ SUBROUTINE wesely_driver( id, ktau, dtstep, config_flags, current_month, & if ( (config_flags%chem_opt == CBMZ ) .or. & (config_flags%chem_opt == CBMZ_BB ) .or. & (config_flags%chem_opt == CBMZ_BB_KPP ) .or. & + (config_flags%chem_opt == CBMZ_MOSAIC_KPP ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_4BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_8BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_4BIN) .or. & @@ -317,7 +318,27 @@ SUBROUTINE wesely_driver( id, ktau, dtstep, config_flags, current_month, & end do end if -!----------------------------------------------------------- + + if (config_flags%chem_opt == CBMZ_MOSAIC_KPP ) then + do j=jts,jte + do i=its,ite + ddvel(i,j,p_aro1) = 0 + ddvel(i,j,p_aro2) = 0 + ddvel(i,j,p_alk1) = 0 + ddvel(i,j,p_ole1) = 0 + ddvel(i,j,p_api1) = 0 + ddvel(i,j,p_api2) = 0 + ddvel(i,j,p_lim1) = 0 + ddvel(i,j,p_lim2) = 0 + ddvel(i,j,p_api) = 0 + ddvel(i,j,p_lim) = 0 + + end do + end do + end if + + + ! For gocartracm,radm !----------------------------------------------------------- if ((config_flags%chem_opt == GOCARTRACM_KPP) .OR. & @@ -1470,6 +1491,7 @@ SUBROUTINE dep_init( id, config_flags, numgas, & ! [KH298]=mole/(l atm) !-------------------------------------------------- is_cbm4_kpp : & + if (config_flags%chem_opt /= CBM4_KPP) then if( config_flags%chem_opt == MOZART_KPP .or. & config_flags%chem_opt == MOZCART_KPP ) then @@ -1794,6 +1816,545 @@ SUBROUTINE dep_init( id, config_flags, numgas, & dvj(p_ho2) = 0.174 if(p_ol2 > 1) dvj(p_ol2) = 0.189 if(p_par > 1) dvj(p_par) = 0.118 !wig, 1-May-2007: for CBMZ +! Dep constants for SAPRCNOV, produced automatically using create_WRF_dep.m script,05-Oct-2009 pablosaide@uiowa.edu + if(p_methacro.gt.1)then +! HSTAR + hstar(p_h2so4) = 2.600E+06 + hstar(p_ccho) = 1.700E+01 + hstar(p_rcho) = 4.200E+03 + hstar(p_etoh) = 2.200E+02 + hstar(p_cco_oh) = 4.100E+03 + hstar(p_rco_oh) = 4.100E+03 + hstar(p_bacl) = 2.700E+01 + hstar(p_bald) = 4.200E+01 + hstar(p_isoprod) = 1.300E-02 + hstar(p_methacro) = 6.500E+00 + hstar(p_prod2) = 2.000E+01 + hstar(p_dcb1) = 4.200E+03 + hstar(p_dcb2) = 4.200E+03 + hstar(p_dcb3) = 4.200E+03 + hstar(p_ethene) = 4.700E-03 + hstar(p_isoprene) = 1.300E-02 + hstar(p_c2h2) = 1.000E-03 + hstar(p_alk3) = 1.200E-03 + hstar(p_alk4) = 1.200E-03 + hstar(p_alk5) = 1.200E-03 + hstar(p_aro1) = 2.100E-01 + hstar(p_aro2) = 2.100E-01 + hstar(p_ole1) = 1.300E-02 + hstar(p_ole2) = 1.300E-02 + hstar(p_terp) = 1.200E-03 + hstar(p_sesq) = 1.200E-03 + hstar(p_rno3) = 2.000E+00 + hstar(p_nphe) = 2.100E-01 + hstar(p_phen) = 1.900E+03 + hstar(p_pan2) = 2.900E+00 + hstar(p_pbzn) = 2.900E+00 + hstar(p_ma_pan) = 2.900E+00 + hstar(p_cco_ooh) = 3.100E+02 + hstar(p_rco_o2) = 4.100E+03 + hstar(p_rco_ooh) = 3.100E+02 + hstar(p_xn) = 1.000E+00 + hstar(p_xc) = 1.000E+00 + hstar(p_c_o2) = 4.000E+03 + hstar(p_cooh) = 3.100E+02 + hstar(p_rooh) = 3.400E+02 + hstar(p_ro2_r) = 4.000E+03 + hstar(p_r2o2) = 4.000E+03 + hstar(p_ro2_n) = 4.000E+03 + hstar(p_cco_o2) = 1.700E+01 + hstar(p_bzco_o2) = 2.100E-01 + hstar(p_ma_rco3) = 6.500E+00 +! DHR + dhr(p_h2so4) = 0.000E+00 + dhr(p_ccho) = 5.000E+03 + dhr(p_rcho) = 0.000E+00 + dhr(p_etoh) = 5.200E+03 + dhr(p_cco_oh) = 6.300E+03 + dhr(p_rco_oh) = 6.300E+03 + dhr(p_bacl) = 0.000E+00 + dhr(p_bald) = 4.600E+03 + dhr(p_isoprod) = 0.000E+00 + dhr(p_methacro) = 0.000E+00 + dhr(p_prod2) = 5.000E+03 + dhr(p_dcb1) = 0.000E+00 + dhr(p_dcb2) = 0.000E+00 + dhr(p_dcb3) = 0.000E+00 + dhr(p_ethene) = 1.800E+03 + dhr(p_isoprene) = 0.000E+00 + dhr(p_c2h2) = 0.000E+00 + dhr(p_alk3) = 3.100E+03 + dhr(p_alk4) = 3.100E+03 + dhr(p_alk5) = 3.100E+03 + dhr(p_aro1) = 3.600E+03 + dhr(p_aro2) = 3.600E+03 + dhr(p_ole1) = 6.400E+03 + dhr(p_ole2) = 6.400E+03 + dhr(p_terp) = 3.100E+03 + dhr(p_sesq) = 3.100E+03 + dhr(p_rno3) = 2.000E+03 + dhr(p_nphe) = 3.600E+03 + dhr(p_phen) = 7.300E+03 + dhr(p_pan2) = 0.000E+00 + dhr(p_pbzn) = 5.900E+03 + dhr(p_ma_pan) = 0.000E+00 + dhr(p_cco_ooh) = 5.200E+03 + dhr(p_rco_o2) = 6.300E+03 + dhr(p_rco_ooh) = 5.200E+03 + dhr(p_xn) = 1.000E+00 + dhr(p_xc) = 1.000E+00 + dhr(p_c_o2) = 5.900E+03 + dhr(p_cooh) = 5.200E+03 + dhr(p_rooh) = 6.000E+03 + dhr(p_ro2_r) = 5.900E+03 + dhr(p_r2o2) = 5.900E+03 + dhr(p_ro2_n) = 5.900E+03 + dhr(p_cco_o2) = 5.000E+03 + dhr(p_bzco_o2) = 3.600E+03 + dhr(p_ma_rco3) = 0.000E+00 +! F0 + f0(p_h2so4) = 0.000E+00 + f0(p_ccho) = 0.000E+00 + f0(p_rcho) = 0.000E+00 + f0(p_etoh) = 0.000E+00 + f0(p_cco_oh) = 0.000E+00 + f0(p_rco_oh) = 0.000E+00 + f0(p_bacl) = 0.000E+00 + f0(p_bald) = 0.000E+00 + f0(p_isoprod) = 0.000E+00 + f0(p_methacro) = 0.000E+00 + f0(p_prod2) = 0.000E+00 + f0(p_dcb1) = 0.000E+00 + f0(p_dcb2) = 0.000E+00 + f0(p_dcb3) = 0.000E+00 + f0(p_ethene) = 0.000E+00 + f0(p_isoprene) = 0.000E+00 + f0(p_c2h2) = 0.000E+00 + f0(p_alk3) = 0.000E+00 + f0(p_alk4) = 0.000E+00 + f0(p_alk5) = 0.000E+00 + f0(p_aro1) = 0.000E+00 + f0(p_aro2) = 0.000E+00 + f0(p_ole1) = 0.000E+00 + f0(p_ole2) = 0.000E+00 + f0(p_terp) = 0.000E+00 + f0(p_sesq) = 0.000E+00 + f0(p_rno3) = 0.000E+00 + f0(p_nphe) = 0.000E+00 + f0(p_phen) = 0.000E+00 + f0(p_pan2) = 0.000E+00 + f0(p_pbzn) = 0.000E+00 + f0(p_ma_pan) = 0.000E+00 + f0(p_cco_ooh) = 0.000E+00 + f0(p_rco_o2) = 0.000E+00 + f0(p_rco_ooh) = 0.000E+00 + f0(p_xn) = 0.000E+00 + f0(p_xc) = 0.000E+00 + f0(p_c_o2) = 0.000E+00 + f0(p_cooh) = 0.000E+00 + f0(p_rooh) = 0.000E+00 + f0(p_ro2_r) = 0.000E+00 + f0(p_r2o2) = 0.000E+00 + f0(p_ro2_n) = 0.000E+00 + f0(p_cco_o2) = 0.000E+00 + f0(p_bzco_o2) = 0.000E+00 + f0(p_ma_rco3) = 0.000E+00 +! DVJ + dvj(p_h2so4) = 1.200E-01 + dvj(p_ccho) = 1.420E-01 + dvj(p_rcho) = 1.420E-01 + dvj(p_etoh) = 1.280E-01 + dvj(p_cco_oh) = 1.000E-01 + dvj(p_rco_oh) = 1.000E-01 + dvj(p_bacl) = 1.000E-01 + dvj(p_bald) = 1.420E-01 + dvj(p_isoprod) = 1.000E-01 + dvj(p_methacro) = 1.420E-01 + dvj(p_prod2) = 9.800E-02 + dvj(p_dcb1) = 1.420E-01 + dvj(p_dcb2) = 1.420E-01 + dvj(p_dcb3) = 1.420E-01 + dvj(p_ethene) = 1.780E-01 + dvj(p_isoprene) = 1.000E-01 + dvj(p_c2h2) = 1.000E-01 + dvj(p_alk3) = 2.000E-01 + dvj(p_alk4) = 2.000E-01 + dvj(p_alk5) = 2.000E-01 + dvj(p_aro1) = 9.800E-02 + dvj(p_aro2) = 9.800E-02 + dvj(p_ole1) = 1.780E-01 + dvj(p_ole2) = 1.780E-01 + dvj(p_terp) = 1.000E-01 + dvj(p_sesq) = 1.000E-01 + dvj(p_rno3) = 1.390E-01 + dvj(p_nphe) = 1.000E-01 + dvj(p_phen) = 1.000E-01 + dvj(p_pan2) = 3.600E-02 + dvj(p_pbzn) = 3.600E-02 + dvj(p_ma_pan) = 3.600E-02 + dvj(p_cco_ooh) = 1.500E-01 + dvj(p_rco_o2) = 1.000E-01 + dvj(p_rco_ooh) = 1.500E-01 + dvj(p_xn) = 1.000E-01 + dvj(p_xc) = 1.000E-01 + dvj(p_c_o2) = 1.760E-01 + dvj(p_cooh) = 1.500E-01 + dvj(p_rooh) = 1.500E-01 + dvj(p_ro2_r) = 1.000E-01 + dvj(p_r2o2) = 1.760E-01 + dvj(p_ro2_n) = 1.000E-01 + dvj(p_cco_o2) = 1.000E-01 + dvj(p_bzco_o2) = 1.000E-01 + dvj(p_ma_rco3) = 1.420E-01 + endif + +!hstar for SOA species assumed 2700 following CMU approach + if(p_pcg1_b_c.gt.1) hstar(p_pcg1_b_c) =2.7E+3 + if(p_pcg2_b_c.gt.1) hstar(p_pcg2_b_c) =2.7E+3 + if(p_pcg3_b_c.gt.1) hstar(p_pcg3_b_c)=2.7E+3 + if(p_pcg4_b_c.gt.1) hstar(p_pcg4_b_c)=2.7E+3 + if(p_pcg5_b_c.gt.1) hstar(p_pcg5_b_c)=2.7E+3 + if(p_pcg6_b_c.gt.1) hstar(p_pcg6_b_c)=2.7E+3 + if(p_pcg7_b_c.gt.1) hstar(p_pcg7_b_c)=2.7E+3 + if(p_pcg8_b_c.gt.1) hstar(p_pcg8_b_c)=2.7E+3 + if(p_pcg9_b_c.gt.1) hstar(p_pcg9_b_c)=2.7E+3 + if(p_opcg1_b_c.gt.1) hstar(p_opcg1_b_c) =2.7E+3 + if(p_opcg2_b_c.gt.1) hstar(p_opcg2_b_c) =2.7E+3 + if(p_opcg3_b_c.gt.1) hstar(p_opcg3_b_c)=2.7E+3 + if(p_opcg4_b_c.gt.1) hstar(p_opcg4_b_c)=2.7E+3 + if(p_opcg5_b_c.gt.1) hstar(p_opcg5_b_c)=2.7E+3 + if(p_opcg6_b_c.gt.1) hstar(p_opcg6_b_c)=2.7E+3 + if(p_opcg7_b_c.gt.1) hstar(p_opcg7_b_c)=2.7E+3 + if(p_opcg8_b_c.gt.1) hstar(p_opcg8_b_c)=2.7E+3 + if(p_pcg1_b_o.gt.1) hstar(p_pcg1_b_o) =2.7E+3 + if(p_pcg2_b_o.gt.1) hstar(p_pcg2_b_o) =2.7E+3 + if(p_pcg3_b_o.gt.1) hstar(p_pcg3_b_o)=2.7E+3 + if(p_pcg4_b_o.gt.1) hstar(p_pcg4_b_o)=2.7E+3 + if(p_pcg5_b_o.gt.1) hstar(p_pcg5_b_o)=2.7E+3 + if(p_pcg6_b_o.gt.1) hstar(p_pcg6_b_o)=2.7E+3 + if(p_pcg7_b_o.gt.1) hstar(p_pcg7_b_o)=2.7E+3 + if(p_pcg8_b_o.gt.1) hstar(p_pcg8_b_o)=2.7E+3 + if(p_pcg9_b_o.gt.1) hstar(p_pcg9_b_o)=2.7E+3 + if(p_opcg1_b_o.gt.1) hstar(p_opcg1_b_o) =2.7E+3 + if(p_opcg2_b_o.gt.1) hstar(p_opcg2_b_o) =2.7E+3 + if(p_opcg3_b_o.gt.1) hstar(p_opcg3_b_o)=2.7E+3 + if(p_opcg4_b_o.gt.1) hstar(p_opcg4_b_o)=2.7E+3 + if(p_opcg5_b_o.gt.1) hstar(p_opcg5_b_o)=2.7E+3 + if(p_opcg6_b_o.gt.1) hstar(p_opcg6_b_o)=2.7E+3 + if(p_opcg7_b_o.gt.1) hstar(p_opcg7_b_o)=2.7E+3 + if(p_opcg8_b_o.gt.1) hstar(p_opcg8_b_o)=2.7E+3 + if(p_pcg1_f_c.gt.1) hstar(p_pcg1_f_c) =2.7E+3 + if(p_pcg2_f_c.gt.1) hstar(p_pcg2_f_c) =2.7E+3 + if(p_pcg3_f_c.gt.1) hstar(p_pcg3_f_c)=2.7E+3 + if(p_pcg4_f_c.gt.1) hstar(p_pcg4_f_c)=2.7E+3 + if(p_pcg5_f_c.gt.1) hstar(p_pcg5_f_c)=2.7E+3 + if(p_pcg6_f_c.gt.1) hstar(p_pcg6_f_c)=2.7E+3 + if(p_pcg7_f_c.gt.1) hstar(p_pcg7_f_c)=2.7E+3 + if(p_pcg8_f_c.gt.1) hstar(p_pcg8_f_c)=2.7E+3 + if(p_pcg9_f_c.gt.1) hstar(p_pcg9_f_c)=2.7E+3 + if(p_opcg1_f_c.gt.1) hstar(p_opcg1_f_c) =2.7E+3 + if(p_opcg2_f_c.gt.1) hstar(p_opcg2_f_c) =2.7E+3 + if(p_opcg3_f_c.gt.1) hstar(p_opcg3_f_c)=2.7E+3 + if(p_opcg4_f_c.gt.1) hstar(p_opcg4_f_c)=2.7E+3 + if(p_opcg5_f_c.gt.1) hstar(p_opcg5_f_c)=2.7E+3 + if(p_opcg6_f_c.gt.1) hstar(p_opcg6_f_c)=2.7E+3 + if(p_opcg7_f_c.gt.1) hstar(p_opcg7_f_c)=2.7E+3 + if(p_opcg8_f_c.gt.1) hstar(p_opcg8_f_c)=2.7E+3 + if(p_pcg1_f_o.gt.1) hstar(p_pcg1_f_o) =2.7E+3 + if(p_pcg2_f_o.gt.1) hstar(p_pcg2_f_o) =2.7E+3 + if(p_pcg3_f_o.gt.1) hstar(p_pcg3_f_o)=2.7E+3 + if(p_pcg4_f_o.gt.1) hstar(p_pcg4_f_o)=2.7E+3 + if(p_pcg5_f_o.gt.1) hstar(p_pcg5_f_o)=2.7E+3 + if(p_pcg6_f_o.gt.1) hstar(p_pcg6_f_o)=2.7E+3 + if(p_pcg7_f_o.gt.1) hstar(p_pcg7_f_o)=2.7E+3 + if(p_pcg8_f_o.gt.1) hstar(p_pcg8_f_o)=2.7E+3 + if(p_pcg9_f_o.gt.1) hstar(p_pcg9_f_o)=2.7E+3 + if(p_opcg1_f_o.gt.1) hstar(p_opcg1_f_o) =2.7E+3 + if(p_opcg2_f_o.gt.1) hstar(p_opcg2_f_o) =2.7E+3 + if(p_opcg3_f_o.gt.1) hstar(p_opcg3_f_o)=2.7E+3 + if(p_opcg4_f_o.gt.1) hstar(p_opcg4_f_o)=2.7E+3 + if(p_opcg5_f_o.gt.1) hstar(p_opcg5_f_o)=2.7E+3 + if(p_opcg6_f_o.gt.1) hstar(p_opcg6_f_o)=2.7E+3 + if(p_opcg7_f_o.gt.1) hstar(p_opcg7_f_o)=2.7E+3 + if(p_opcg8_f_o.gt.1) hstar(p_opcg8_f_o)=2.7E+3 + if(p_ant1_c.gt.1) hstar(p_ant1_c)=2.7E+3 + if(p_ant2_c.gt.1) hstar(p_ant2_c)=2.7E+3 + if(p_ant3_c.gt.1) hstar(p_ant3_c)=2.7E+3 + if(p_ant4_c.gt.1) hstar(p_ant4_c)=2.7E+3 + if(p_ant1_o.gt.1) hstar(p_ant1_o)=2.7E+3 + if(p_ant2_o.gt.1) hstar(p_ant2_o)=2.7E+3 + if(p_ant3_o.gt.1) hstar(p_ant3_o)=2.7E+3 + if(p_ant4_o.gt.1) hstar(p_ant4_o)=2.7E+3 + if(p_biog1_c.gt.1) hstar(p_biog1_c)=2.7E+3 + if(p_biog2_c.gt.1) hstar(p_biog2_c)=2.7E+3 + if(p_biog3_c.gt.1) hstar(p_biog3_c)=2.7E+3 + if(p_biog4_c.gt.1) hstar(p_biog4_c)=2.7E+3 + if(p_biog1_o.gt.1) hstar(p_biog1_o)=2.7E+3 + if(p_biog2_o.gt.1) hstar(p_biog2_o)=2.7E+3 + if(p_biog3_o.gt.1) hstar(p_biog3_o)=2.7E+3 + if(p_biog4_o.gt.1) hstar(p_biog4_o)=2.7E+3 + + if(p_pcg1_b_c.gt.1) dhr(p_pcg1_b_c) =6.4E+3 + if(p_pcg2_b_c.gt.1) dhr(p_pcg2_b_c) =6.4E+3 + if(p_pcg3_b_c.gt.1) dhr(p_pcg3_b_c)=6.4E+3 + if(p_pcg4_b_c.gt.1) dhr(p_pcg4_b_c)=6.4E+3 + if(p_pcg5_b_c.gt.1) dhr(p_pcg5_b_c)=6.4E+3 + if(p_pcg6_b_c.gt.1) dhr(p_pcg6_b_c)=6.4E+3 + if(p_pcg7_b_c.gt.1) dhr(p_pcg7_b_c)=6.4E+3 + if(p_pcg8_b_c.gt.1) dhr(p_pcg8_b_c)=6.4E+3 + if(p_pcg9_b_c.gt.1) dhr(p_pcg9_b_c)=6.4E+3 + if(p_opcg1_b_c.gt.1) dhr(p_opcg1_b_c) =6.4E+3 + if(p_opcg2_b_c.gt.1) dhr(p_opcg2_b_c) =6.4E+3 + if(p_opcg3_b_c.gt.1) dhr(p_opcg3_b_c)=6.4E+3 + if(p_opcg4_b_c.gt.1) dhr(p_opcg4_b_c)=6.4E+3 + if(p_opcg5_b_c.gt.1) dhr(p_opcg5_b_c)=6.4E+3 + if(p_opcg6_b_c.gt.1) dhr(p_opcg6_b_c)=6.4E+3 + if(p_opcg7_b_c.gt.1) dhr(p_opcg7_b_c)=6.4E+3 + if(p_opcg8_b_c.gt.1) dhr(p_opcg8_b_c)=6.4E+3 + if(p_pcg1_b_o.gt.1) dhr(p_pcg1_b_o) =6.4E+3 + if(p_pcg2_b_o.gt.1) dhr(p_pcg2_b_o) =6.4E+3 + if(p_pcg3_b_o.gt.1) dhr(p_pcg3_b_o)=6.4E+3 + if(p_pcg4_b_o.gt.1) dhr(p_pcg4_b_o)=6.4E+3 + if(p_pcg5_b_o.gt.1) dhr(p_pcg5_b_o)=6.4E+3 + if(p_pcg6_b_o.gt.1) dhr(p_pcg6_b_o)=6.4E+3 + if(p_pcg7_b_o.gt.1) dhr(p_pcg7_b_o)=6.4E+3 + if(p_pcg8_b_o.gt.1) dhr(p_pcg8_b_o)=6.4E+3 + if(p_pcg9_b_o.gt.1) dhr(p_pcg9_b_o)=6.4E+3 + if(p_opcg1_b_o.gt.1) dhr(p_opcg1_b_o) =6.4E+3 + if(p_opcg2_b_o.gt.1) dhr(p_opcg2_b_o) =6.4E+3 + if(p_opcg3_b_o.gt.1) dhr(p_opcg3_b_o)=6.4E+3 + if(p_opcg4_b_o.gt.1) dhr(p_opcg4_b_o)=6.4E+3 + if(p_opcg5_b_o.gt.1) dhr(p_opcg5_b_o)=6.4E+3 + if(p_opcg6_b_o.gt.1) dhr(p_opcg6_b_o)=6.4E+3 + if(p_opcg7_b_o.gt.1) dhr(p_opcg7_b_o)=6.4E+3 + if(p_opcg8_b_o.gt.1) dhr(p_opcg8_b_o)=6.4E+3 + if(p_pcg1_f_c.gt.1) dhr(p_pcg1_f_c) =6.4E+3 + if(p_pcg2_f_c.gt.1) dhr(p_pcg2_f_c) =6.4E+3 + if(p_pcg3_f_c.gt.1) dhr(p_pcg3_f_c)=6.4E+3 + if(p_pcg4_f_c.gt.1) dhr(p_pcg4_f_c)=6.4E+3 + if(p_pcg5_f_c.gt.1) dhr(p_pcg5_f_c)=6.4E+3 + if(p_pcg6_f_c.gt.1) dhr(p_pcg6_f_c)=6.4E+3 + if(p_pcg7_f_c.gt.1) dhr(p_pcg7_f_c)=6.4E+3 + if(p_pcg8_f_c.gt.1) dhr(p_pcg8_f_c)=6.4E+3 + if(p_pcg9_f_c.gt.1) dhr(p_pcg9_f_c)=6.4E+3 + if(p_opcg1_f_c.gt.1) dhr(p_opcg1_f_c) =6.4E+3 + if(p_opcg2_f_c.gt.1) dhr(p_opcg2_f_c) =6.4E+3 + if(p_opcg3_f_c.gt.1) dhr(p_opcg3_f_c)=6.4E+3 + if(p_opcg4_f_c.gt.1) dhr(p_opcg4_f_c)=6.4E+3 + if(p_opcg5_f_c.gt.1) dhr(p_opcg5_f_c)=6.4E+3 + if(p_opcg6_f_c.gt.1) dhr(p_opcg6_f_c)=6.4E+3 + if(p_opcg7_f_c.gt.1) dhr(p_opcg7_f_c)=6.4E+3 + if(p_opcg8_f_c.gt.1) dhr(p_opcg8_f_c)=6.4E+3 + if(p_pcg1_f_o.gt.1) dhr(p_pcg1_f_o) =6.4E+3 + if(p_pcg2_f_o.gt.1) dhr(p_pcg2_f_o) =6.4E+3 + if(p_pcg3_f_o.gt.1) dhr(p_pcg3_f_o)=6.4E+3 + if(p_pcg4_f_o.gt.1) dhr(p_pcg4_f_o)=6.4E+3 + if(p_pcg5_f_o.gt.1) dhr(p_pcg5_f_o)=6.4E+3 + if(p_pcg6_f_o.gt.1) dhr(p_pcg6_f_o)=6.4E+3 + if(p_pcg7_f_o.gt.1) dhr(p_pcg7_f_o)=6.4E+3 + if(p_pcg8_f_o.gt.1) dhr(p_pcg8_f_o)=6.4E+3 + if(p_pcg9_f_o.gt.1) dhr(p_pcg9_f_o)=6.4E+3 + if(p_opcg1_f_o.gt.1) dhr(p_opcg1_f_o) =6.4E+3 + if(p_opcg2_f_o.gt.1) dhr(p_opcg2_f_o) =6.4E+3 + if(p_opcg3_f_o.gt.1) dhr(p_opcg3_f_o)=6.4E+3 + if(p_opcg4_f_o.gt.1) dhr(p_opcg4_f_o)=6.4E+3 + if(p_opcg5_f_o.gt.1) dhr(p_opcg5_f_o)=6.4E+3 + if(p_opcg6_f_o.gt.1) dhr(p_opcg6_f_o)=6.4E+3 + if(p_opcg7_f_o.gt.1) dhr(p_opcg7_f_o)=6.4E+3 + if(p_opcg8_f_o.gt.1) dhr(p_opcg8_f_o)=6.4E+3 + if(p_ant1_c.gt.1) dhr(p_ant1_c)=6.4E+3 + if(p_ant2_c.gt.1) dhr(p_ant2_c)=6.4E+3 + if(p_ant3_c.gt.1) dhr(p_ant3_c)=6.4E+3 + if(p_ant4_c.gt.1) dhr(p_ant4_c)=6.4E+3 + if(p_ant1_o.gt.1) dhr(p_ant1_o)=6.4E+3 + if(p_ant2_o.gt.1) dhr(p_ant2_o)=6.4E+3 + if(p_ant3_o.gt.1) dhr(p_ant3_o)=6.4E+3 + if(p_ant4_o.gt.1) dhr(p_ant4_o)=6.4E+3 + if(p_biog1_c.gt.1) dhr(p_biog1_c)=6.4E+3 + if(p_biog2_c.gt.1) dhr(p_biog2_c)=6.4E+3 + if(p_biog3_c.gt.1) dhr(p_biog3_c)=6.4E+3 + if(p_biog4_c.gt.1) dhr(p_biog4_c)=6.4E+3 + if(p_biog1_o.gt.1) dhr(p_biog1_o)=6.4E+3 + if(p_biog2_o.gt.1) dhr(p_biog2_o)=6.4E+3 + if(p_biog3_o.gt.1) dhr(p_biog3_o)=6.4E+3 + if(p_biog4_o.gt.1) dhr(p_biog4_o)=6.4E+3 + +!Assume reactivity =0 for SOA species + + if(p_pcg1_b_c.gt.1) f0(p_pcg1_b_c) =0.0000 + if(p_pcg2_b_c.gt.1) f0(p_pcg2_b_c) =0.0000 + if(p_pcg3_b_c.gt.1) f0(p_pcg3_b_c)=0.0000 + if(p_pcg4_b_c.gt.1) f0(p_pcg4_b_c)=0.0000 + if(p_pcg5_b_c.gt.1) f0(p_pcg5_b_c)=0.0000 + if(p_pcg6_b_c.gt.1) f0(p_pcg6_b_c)=0.0000 + if(p_pcg7_b_c.gt.1) f0(p_pcg7_b_c)=0.0000 + if(p_pcg8_b_c.gt.1) f0(p_pcg8_b_c)=0.0000 + if(p_pcg9_b_c.gt.1) f0(p_pcg9_b_c)=0.0000 + if(p_opcg1_b_c.gt.1) f0(p_opcg1_b_c) =0.0000 + if(p_opcg2_b_c.gt.1) f0(p_opcg2_b_c) =0.0000 + if(p_opcg3_b_c.gt.1) f0(p_opcg3_b_c)=0.0000 + if(p_opcg4_b_c.gt.1) f0(p_opcg4_b_c)=0.0000 + if(p_opcg5_b_c.gt.1) f0(p_opcg5_b_c)=0.0000 + if(p_opcg6_b_c.gt.1) f0(p_opcg6_b_c)=0.0000 + if(p_opcg7_b_c.gt.1) f0(p_opcg7_b_c)=0.0000 + if(p_opcg8_b_c.gt.1) f0(p_opcg8_b_c)=0.0000 + if(p_pcg1_b_o.gt.1) f0(p_pcg1_b_o) =0.0000 + if(p_pcg2_b_o.gt.1) f0(p_pcg2_b_o) =0.0000 + if(p_pcg3_b_o.gt.1) f0(p_pcg3_b_o)=0.0000 + if(p_pcg4_b_o.gt.1) f0(p_pcg4_b_o)=0.0000 + if(p_pcg5_b_o.gt.1) f0(p_pcg5_b_o)=0.0000 + if(p_pcg6_b_o.gt.1) f0(p_pcg6_b_o)=0.0000 + if(p_pcg7_b_o.gt.1) f0(p_pcg7_b_o)=0.0000 + if(p_pcg8_b_o.gt.1) f0(p_pcg8_b_o)=0.0000 + if(p_pcg9_b_o.gt.1) f0(p_pcg9_b_o)=0.0000 + if(p_opcg1_b_o.gt.1) f0(p_opcg1_b_o) =0.0000 + if(p_opcg2_b_o.gt.1) f0(p_opcg2_b_o) =0.0000 + if(p_opcg3_b_o.gt.1) f0(p_opcg3_b_o)=0.0000 + if(p_opcg4_b_o.gt.1) f0(p_opcg4_b_o)=0.0000 + if(p_opcg5_b_o.gt.1) f0(p_opcg5_b_o)=0.0000 + if(p_opcg6_b_o.gt.1) f0(p_opcg6_b_o)=0.0000 + if(p_opcg7_b_o.gt.1) f0(p_opcg7_b_o)=0.0000 + if(p_opcg8_b_o.gt.1) f0(p_opcg8_b_o)=0.0000 + if(p_pcg1_f_c.gt.1) f0(p_pcg1_f_c) =0.0000 + if(p_pcg2_f_c.gt.1) f0(p_pcg2_f_c) =0.0000 + if(p_pcg3_f_c.gt.1) f0(p_pcg3_f_c)=0.0000 + if(p_pcg4_f_c.gt.1) f0(p_pcg4_f_c)=0.0000 + if(p_pcg5_f_c.gt.1) f0(p_pcg5_f_c)=0.0000 + if(p_pcg6_f_c.gt.1) f0(p_pcg6_f_c)=0.0000 + if(p_pcg7_f_c.gt.1) f0(p_pcg7_f_c)=0.0000 + if(p_pcg8_f_c.gt.1) f0(p_pcg8_f_c)=0.0000 + if(p_pcg9_f_c.gt.1) f0(p_pcg9_f_c)=0.0000 + if(p_opcg1_f_c.gt.1) f0(p_opcg1_f_c) =0.0000 + if(p_opcg2_f_c.gt.1) f0(p_opcg2_f_c) =0.0000 + if(p_opcg3_f_c.gt.1) f0(p_opcg3_f_c)=0.0000 + if(p_opcg4_f_c.gt.1) f0(p_opcg4_f_c)=0.0000 + if(p_opcg5_f_c.gt.1) f0(p_opcg5_f_c)=0.0000 + if(p_opcg6_f_c.gt.1) f0(p_opcg6_f_c)=0.0000 + if(p_opcg7_f_c.gt.1) f0(p_opcg7_f_c)=0.0000 + if(p_opcg8_f_c.gt.1) f0(p_opcg8_f_c)=0.0000 + if(p_pcg1_f_o.gt.1) f0(p_pcg1_f_o) =0.0000 + if(p_pcg2_f_o.gt.1) f0(p_pcg2_f_o) =0.0000 + if(p_pcg3_f_o.gt.1) f0(p_pcg3_f_o)=0.0000 + if(p_pcg4_f_o.gt.1) f0(p_pcg4_f_o)=0.0000 + if(p_pcg5_f_o.gt.1) f0(p_pcg5_f_o)=0.0000 + if(p_pcg6_f_o.gt.1) f0(p_pcg6_f_o)=0.0000 + if(p_pcg7_f_o.gt.1) f0(p_pcg7_f_o)=0.0000 + if(p_pcg8_f_o.gt.1) f0(p_pcg8_f_o)=0.0000 + if(p_pcg9_f_o.gt.1) f0(p_pcg9_f_o)=0.0000 + if(p_opcg1_f_o.gt.1) f0(p_opcg1_f_o) =0.0000 + if(p_opcg2_f_o.gt.1) f0(p_opcg2_f_o) =0.0000 + if(p_opcg3_f_o.gt.1) f0(p_opcg3_f_o)=0.0000 + if(p_opcg4_f_o.gt.1) f0(p_opcg4_f_o)=0.0000 + if(p_opcg5_f_o.gt.1) f0(p_opcg5_f_o)=0.0000 + if(p_opcg6_f_o.gt.1) f0(p_opcg6_f_o)=0.0000 + if(p_opcg7_f_o.gt.1) f0(p_opcg7_f_o)=0.0000 + if(p_opcg8_f_o.gt.1) f0(p_opcg8_f_o)=0.0000 + if(p_ant1_c.gt.1) f0(p_ant1_c)=0.0000 + if(p_ant2_c.gt.1) f0(p_ant2_c)=0.0000 + if(p_ant3_c.gt.1) f0(p_ant3_c)=0.0000 + if(p_ant4_c.gt.1) f0(p_ant4_c)=0.0000 + if(p_ant1_o.gt.1) f0(p_ant1_o)=0.0000 + if(p_ant2_o.gt.1) f0(p_ant2_o)=0.0000 + if(p_ant3_o.gt.1) f0(p_ant3_o)=0.0000 + if(p_ant4_o.gt.1) f0(p_ant4_o)=0.0000 + if(p_biog1_c.gt.1) f0(p_biog1_c)=0.0000 + if(p_biog2_c.gt.1) f0(p_biog2_c)=0.0000 + if(p_biog3_c.gt.1) f0(p_biog3_c)=0.0000 + if(p_biog4_c.gt.1) f0(p_biog4_c)=0.0000 + if(p_biog1_o.gt.1) f0(p_biog1_o)=0.0000 + if(p_biog2_o.gt.1) f0(p_biog2_o)=0.0000 + if(p_biog3_o.gt.1) f0(p_biog3_o)=0.0000 + if(p_biog4_o.gt.1) f0(p_biog4_o)=0.0000 + + +!Diffusion coefficients of SOA species + if(p_pcg1_b_c.gt.1) dvj(p_pcg1_b_c) =1.0E-1 + if(p_pcg2_b_c.gt.1) dvj(p_pcg2_b_c) =1.0E-1 + if(p_pcg3_b_c.gt.1) dvj(p_pcg3_b_c)=1.0E-1 + if(p_pcg4_b_c.gt.1) dvj(p_pcg4_b_c)=1.0E-1 + if(p_pcg5_b_c.gt.1) dvj(p_pcg5_b_c)=1.0E-1 + if(p_pcg6_b_c.gt.1) dvj(p_pcg6_b_c)=1.0E-1 + if(p_pcg7_b_c.gt.1) dvj(p_pcg7_b_c)=1.0E-1 + if(p_pcg8_b_c.gt.1) dvj(p_pcg8_b_c)=1.0E-1 + if(p_pcg9_b_c.gt.1) dvj(p_pcg9_b_c)=1.0E-1 + if(p_opcg1_b_c.gt.1) dvj(p_opcg1_b_c) =1.0E-1 + if(p_opcg2_b_c.gt.1) dvj(p_opcg2_b_c) =1.0E-1 + if(p_opcg3_b_c.gt.1) dvj(p_opcg3_b_c)=1.0E-1 + if(p_opcg4_b_c.gt.1) dvj(p_opcg4_b_c)=1.0E-1 + if(p_opcg5_b_c.gt.1) dvj(p_opcg5_b_c)=1.0E-1 + if(p_opcg6_b_c.gt.1) dvj(p_opcg6_b_c)=1.0E-1 + if(p_opcg7_b_c.gt.1) dvj(p_opcg7_b_c)=1.0E-1 + if(p_opcg8_b_c.gt.1) dvj(p_opcg8_b_c)=1.0E-1 + if(p_pcg1_b_o.gt.1) dvj(p_pcg1_b_o) =1.0E-1 + if(p_pcg2_b_o.gt.1) dvj(p_pcg2_b_o) =1.0E-1 + if(p_pcg3_b_o.gt.1) dvj(p_pcg3_b_o)=1.0E-1 + if(p_pcg4_b_o.gt.1) dvj(p_pcg4_b_o)=1.0E-1 + if(p_pcg5_b_o.gt.1) dvj(p_pcg5_b_o)=1.0E-1 + if(p_pcg6_b_o.gt.1) dvj(p_pcg6_b_o)=1.0E-1 + if(p_pcg7_b_o.gt.1) dvj(p_pcg7_b_o)=1.0E-1 + if(p_pcg8_b_o.gt.1) dvj(p_pcg8_b_o)=1.0E-1 + if(p_pcg9_b_o.gt.1) dvj(p_pcg9_b_o)=1.0E-1 + if(p_opcg1_b_o.gt.1) dvj(p_opcg1_b_o) =1.0E-1 + if(p_opcg2_b_o.gt.1) dvj(p_opcg2_b_o) =1.0E-1 + if(p_opcg3_b_o.gt.1) dvj(p_opcg3_b_o)=1.0E-1 + if(p_opcg4_b_o.gt.1) dvj(p_opcg4_b_o)=1.0E-1 + if(p_opcg5_b_o.gt.1) dvj(p_opcg5_b_o)=1.0E-1 + if(p_opcg6_b_o.gt.1) dvj(p_opcg6_b_o)=1.0E-1 + if(p_opcg7_b_o.gt.1) dvj(p_opcg7_b_o)=1.0E-1 + if(p_opcg8_b_o.gt.1) dvj(p_opcg8_b_o)=1.0E-1 + if(p_pcg1_f_c.gt.1) dvj(p_pcg1_f_c) =1.0E-1 + if(p_pcg2_f_c.gt.1) dvj(p_pcg2_f_c) =1.0E-1 + if(p_pcg3_f_c.gt.1) dvj(p_pcg3_f_c)=1.0E-1 + if(p_pcg4_f_c.gt.1) dvj(p_pcg4_f_c)=1.0E-1 + if(p_pcg5_f_c.gt.1) dvj(p_pcg5_f_c)=1.0E-1 + if(p_pcg6_f_c.gt.1) dvj(p_pcg6_f_c)=1.0E-1 + if(p_pcg7_f_c.gt.1) dvj(p_pcg7_f_c)=1.0E-1 + if(p_pcg8_f_c.gt.1) dvj(p_pcg8_f_c)=1.0E-1 + if(p_pcg9_f_c.gt.1) dvj(p_pcg9_f_c)=1.0E-1 + if(p_opcg1_f_c.gt.1) dvj(p_opcg1_f_c) =1.0E-1 + if(p_opcg2_f_c.gt.1) dvj(p_opcg2_f_c) =1.0E-1 + if(p_opcg3_f_c.gt.1) dvj(p_opcg3_f_c)=1.0E-1 + if(p_opcg4_f_c.gt.1) dvj(p_opcg4_f_c)=1.0E-1 + if(p_opcg5_f_c.gt.1) dvj(p_opcg5_f_c)=1.0E-1 + if(p_opcg6_f_c.gt.1) dvj(p_opcg6_f_c)=1.0E-1 + if(p_opcg7_f_c.gt.1) dvj(p_opcg7_f_c)=1.0E-1 + if(p_opcg8_f_c.gt.1) dvj(p_opcg8_f_c)=1.0E-1 + if(p_pcg1_f_o.gt.1) dvj(p_pcg1_f_o) =1.0E-1 + if(p_pcg2_f_o.gt.1) dvj(p_pcg2_f_o) =1.0E-1 + if(p_pcg3_f_o.gt.1) dvj(p_pcg3_f_o)=1.0E-1 + if(p_pcg4_f_o.gt.1) dvj(p_pcg4_f_o)=1.0E-1 + if(p_pcg5_f_o.gt.1) dvj(p_pcg5_f_o)=1.0E-1 + if(p_pcg6_f_o.gt.1) dvj(p_pcg6_f_o)=1.0E-1 + if(p_pcg7_f_o.gt.1) dvj(p_pcg7_f_o)=1.0E-1 + if(p_pcg8_f_o.gt.1) dvj(p_pcg8_f_o)=1.0E-1 + if(p_pcg9_f_o.gt.1) dvj(p_pcg9_f_o)=1.0E-1 + if(p_opcg1_f_o.gt.1) dvj(p_opcg1_f_o) =1.0E-1 + if(p_opcg2_f_o.gt.1) dvj(p_opcg2_f_o) =1.0E-1 + if(p_opcg3_f_o.gt.1) dvj(p_opcg3_f_o)=1.0E-1 + if(p_opcg4_f_o.gt.1) dvj(p_opcg4_f_o)=1.0E-1 + if(p_opcg5_f_o.gt.1) dvj(p_opcg5_f_o)=1.0E-1 + if(p_opcg6_f_o.gt.1) dvj(p_opcg6_f_o)=1.0E-1 + if(p_opcg7_f_o.gt.1) dvj(p_opcg7_f_o)=1.0E-1 + if(p_opcg8_f_o.gt.1) dvj(p_opcg8_f_o)=1.0E-1 + if(p_ant1_c.gt.1) dvj(p_ant1_c)=1.0E-1 + if(p_ant2_c.gt.1) dvj(p_ant2_c)=1.0E-1 + if(p_ant3_c.gt.1) dvj(p_ant3_c)=1.0E-1 + if(p_ant4_c.gt.1) dvj(p_ant4_c)=1.0E-1 + if(p_ant1_o.gt.1) dvj(p_ant1_o)=1.0E-1 + if(p_ant2_o.gt.1) dvj(p_ant2_o)=1.0E-1 + if(p_ant3_o.gt.1) dvj(p_ant3_o)=1.0E-1 + if(p_ant4_o.gt.1) dvj(p_ant4_o)=1.0E-1 + if(p_biog1_c.gt.1) dvj(p_biog1_c)=1.0E-1 + if(p_biog2_c.gt.1) dvj(p_biog2_c)=1.0E-1 + if(p_biog3_c.gt.1) dvj(p_biog3_c)=1.0E-1 + if(p_biog4_c.gt.1) dvj(p_biog4_c)=1.0E-1 + if(p_biog1_o.gt.1) dvj(p_biog1_o)=1.0E-1 + if(p_biog2_o.gt.1) dvj(p_biog2_o)=1.0E-1 + if(p_biog3_o.gt.1) dvj(p_biog3_o)=1.0E-1 + if(p_biog4_o.gt.1) dvj(p_biog4_o)=1.0E-1 + + + DO l = 1, numgas hstar4(l) = hstar(l) ! preliminary !-------------------------------------------------- diff --git a/chem/module_fastj_mie.F b/chem/module_fastj_mie.F index ff7fbdb6bd..b9a57ba2c5 100755 --- a/chem/module_fastj_mie.F +++ b/chem/module_fastj_mie.F @@ -47,10 +47,11 @@ ! vicinity of Houston using a fully-coupled meteorology-chemistry- ! aerosol model, J. Geophys. Res., 111, D21305, ! doi:10.1029/2005JD006721. -! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, et al. -! (2009), Closure on the single scattering albedo in the WRF-Chem -! framework using data from the MILAGRO campaign, Atmos. Chem. Phys., -! submitted. +! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, and +! A. Laskin (2010), Technical note: evaluation of the WRF-Chem +! "aerosol chemical to aerosol optical properties" module using data +! from the MILAGRO campaign, Atmos. Chem. Phys., 10, 7325-7340, +! doi:10.5194/acp-10-7325-2010. ! ! Contact Jerome Fast for updates on the status of manuscripts under ! review. diff --git a/chem/module_ftuv_driver.F b/chem/module_ftuv_driver.F index 0e05f9b20d..a735d55dee 100644 --- a/chem/module_ftuv_driver.F +++ b/chem/module_ftuv_driver.F @@ -246,7 +246,7 @@ subroutine ftuv_driver( id, curr_secs, dtstep, config_flags, & isorg=0 aer_select: SELECT CASE(config_flags%chem_opt) - CASE (RADM2SORG,RADM2SORG_KPP,RACMSORG_KPP,RACM_ESRLSORG_KPP,RACMSORG_AQ) + CASE (RADM2SORG,RADM2SORG_KPP,RACMSORG_KPP,RACM_ESRLSORG_KPP,RACMSORG_AQ,CBMZSORG,CBMZSORG_AQ) isorg=1 CALL wrf_debug(15,'SORGAM aerosols initialization ') CASE DEFAULT @@ -263,7 +263,7 @@ subroutine ftuv_driver( id, curr_secs, dtstep, config_flags, & gmtp = mod( xhour, 24.0_dp ) gmtp = gmtp + xmin/m2s - xlwc(:) = 0 + xlwc(:) = 0 !initialize in case no cloud water is present !---------------------------------------------------- ! set photolysis rates diff --git a/chem/module_gocart_dmsemis.F b/chem/module_gocart_dmsemis.F index a8a8366ee6..d930512113 100644 --- a/chem/module_gocart_dmsemis.F +++ b/chem/module_gocart_dmsemis.F @@ -68,7 +68,8 @@ subroutine gocart_dmsemis(dt,config_flags,alt,t_phy,u_phy, & tc(1,1,1,1)=chem(i,kts,j,p_dms)*1.d-6 dmso(1,1)=dms_0(i,j) w10m(1,1)=sqrt(u10(i,j)*u10(i,j)+v10(i,j)*v10(i,j)) - airmas(1,1,1)=-.01*(p8w(i,kts+1,j)-p8w(i,kts,j))*dx*dx/g + !---bug fixing: modified by Qing.Yang@pnl.gov to delete a 0.01 factor -Aug,2010-- + airmas(1,1,1)=-1.0*(p8w(i,kts+1,j)-p8w(i,kts,j))*dx*dx/g dxy(1)=dx*dx tskin(1,1)=tsk(i,j) ! diff --git a/chem/module_input_chem_data.F b/chem/module_input_chem_data.F index f64b205fd0..57fc2c7e6b 100755 --- a/chem/module_input_chem_data.F +++ b/chem/module_input_chem_data.F @@ -73,7 +73,7 @@ MODULE module_input_chem_data INTEGER :: kx ! number of vertical levels in temp profile INTEGER :: kxm1 - PARAMETER( kx=16, kxm1=kx-1, logg=100, lo=34) + PARAMETER( kx=16, kxm1=kx-1, logg=200, lo=34) ! Changed value of logg from 100 to 200 for additional gas species INTEGER, DIMENSION(logg) :: iref @@ -342,8 +342,23 @@ SUBROUTINE setup_gasprofile_maps(chem_opt, numgas) GOCARTRACM_KPP, GOCARTRADM2,GOCARTRADM2_KPP,CHEM_TRACER, CHEM_TRACE2) call setup_gasprofile_map_radm_racm - case (CBMZ, CBMZ_BB, CBMZ_BB_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + case (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) + call setup_gasprofile_map_saprcnov + + + + case (CBMZ, CBMZ_BB, CBMZ_BB_KPP, & + CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_4BIN, & + CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ,CBMZSORG, & + CBMZSORG_AQ, CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) +! This call works for CBMZ_BB_KPP and CBMZ_SORGAM_KPP if all additional +! gas species such as ch4, api, lim etc. are put after ho2 in the +! package definitions in registry.chem. This is important to not mess +! up the mapping of the first 33 species, and also make sure the last +! gas is isopo2. This is important for aerosol driver routines. Right +! now I put all additional species just before isopo2 in cbmz_mosaic_kpp +! Manish Shrivastava 12/8/2009 call setup_gasprofile_map_cbmz(numgas) case (CBM4_KPP) @@ -397,6 +412,46 @@ SUBROUTINE setup_gasprofile_map_radm_racm END SUBROUTINE setup_gasprofile_map_radm_racm +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Maps for indices and fractional apportionment of the default +! species profiles to the SAPRC99 species for ICs and BCs. +! Code build atomatically using write_BD_and_IC_code.m script and +! BD_and_IC_NALROM_to_WRF-SAPRC.txt file +! pablo-saide@uiowa.edu; 25-Aug-2009 +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +SUBROUTINE setup_gasprofile_map_saprcnov + iref(:) = 7 !default value + iref(1:49) = (/1,4,2,2,30,30,23,3,31,12, & + 19,6,8,9,18,17,6,6,6,23, & + 23,23,21,20,14,7,26,27,15,13, & + 11,11,23,23,6,6,23,10,16,25, & + 32,32,32,28,29,5,5,32,32/) + + fracref(:) = 1. !default value + fracref(1:49) = (/1.00E+00,1.00E+00,2.50E-01,7.50E-01,9.00E-01,1.00E-01, & + 1.00E+00,1.00E+00,1.00E+00,1.00E+00,1.00E+00,1.00E+00, & + 1.00E+00,1.00E+00,1.00E+00,1.00E+00,6.25E-04,5.00E-04, & + 2.50E-04,1.00E+00,1.00E+00,1.00E+00,1.00E+00,1.00E+00, & + 1.00E+00,1.00E+00,1.00E+00,1.00E+00,1.00E+00,1.00E+00, & + 5.00E-01,5.00E-01,1.00E+00,1.00E+00,8.00E-03,8.00E-03, & + 1.00E+00,1.00E+00,1.00E+00,1.00E+00,3.00E-01,2.00E-01, & + 2.00E-01,1.00E+00,1.00E+00,1.00E+00,5.00E-01,1.00E+00, & + 3.00E-01/) + + ggnam(:) = 'JUNK' !default value + ggnam(1:49) = (/'O3 ','H2O2','NO ','NO2 ','NO3 ','N2O5', & + 'HONO','HNO3','HNO4','SO2 ','H2SO','CO ', & !H2SO really is H2SO4 + 'HCHO','CCHO','RCHO','MEK ','HCOH','CCOH', & !HCOH=HCOOH, CCOH=CCO_OH + 'RCOH','GLY ','MGLY','CRES','MEAC','MVK ', & !RCOH=RCO_OH, MEAC=METHACRO + 'ETHE','ISPR','C3H8','C2H2','C3H6','ALK3', & !ETHE=ETHENE, ISPR=ISOPRENE + 'ALK4','ALK5','ARO1','ARO2','OLE1','OLE2', & + 'RNO3','PAN ','PAN2','MAPN','COOH','RCO2', & !MAPN=MA_PAN, COOH=CCO_OOH, RCO2=RCO_O2 + 'ROOH','OH ','HO2 ','COOH','ROOH','RO2R', & !ROOH=RCO_OOH, RO2R=RO2_R + 'RO2R'/) !RO2R=RO2_R + +END SUBROUTINE setup_gasprofile_map_saprcnov + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Maps for indices and fractional apportionment of the default ! species profiles to the CBMZ species for ICs and BCs. The profiles @@ -1303,8 +1358,11 @@ SUBROUTINE make_chem_profile ( nx1, nx2, ny1, ny2, nz1, nz2, nch, numgas, & ! we have to treat it separately. (wig, 2-May-2007) ! SELECT CASE(chem_opt) - CASE (CBMZ,CBMZ_BB,CBMZ_BB_KPP,CBMZ_MOSAIC_4BIN,CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ,CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ,CBMZ_BB,CBMZ_BB_KPP, CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN,CBMZ_MOSAIC_8BIN, & + CBMZ_MOSAIC_4BIN_AQ,CBMZ_MOSAIC_8BIN_AQ, & + CBMZSORG,CBMZSORG_AQ, CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ) do j = ny1,ny2 do k = nz1,nz2 do i = nx1,nx2 @@ -2817,10 +2875,15 @@ integer FUNCTION get_last_gas(chem_opt) GOCARTRACM_KPP,GOCARTRADM2,GOCARTRADM2_KPP) get_last_gas = p_ho2 - case (CBMZ) + case (SAPRC99_KPP,SAPRC99_MOSAIC_4BIN_VBS2_KPP) + get_last_gas = p_ch4 + + + case (CBMZ,CBMZ_MOSAIC_DMS_4BIN,CBMZ_MOSAIC_DMS_8BIN,CBMZ_MOSAIC_DMS_4BIN_AQ,CBMZ_MOSAIC_DMS_8BIN_AQ) get_last_gas = p_mtf - case (CBMZ_BB,CBMZ_BB_KPP,CBMZ_MOSAIC_4BIN,CBMZ_MOSAIC_8BIN,CBMZ_MOSAIC_4BIN_AQ,CBMZ_MOSAIC_8BIN_AQ) + case (CBMZ_BB,CBMZ_BB_KPP, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_4BIN, & + CBMZ_MOSAIC_8BIN,CBMZ_MOSAIC_4BIN_AQ,CBMZ_MOSAIC_8BIN_AQ,CBMZSORG,CBMZSORG_AQ) get_last_gas = p_isopo2 case (CHEM_TRACER) @@ -3098,6 +3161,268 @@ SUBROUTINE gasprofile_init_pnnl( chem_opt ) xl(iref(p_o3-1),3:10) = 6.00e-8 !60 ppbv > 2 km and < stratosphere end if #endif + +#if (CASENAME == 101) + + if( p_o3 > 1 ) then + xl(iref(p_o3-1),12:16) = 1.4e-7 + xl(iref(p_o3-1),11:11) = 1.40e-7 + xl(iref(p_o3-1),10:10) = 1.4e-7 + xl(iref(p_o3-1),9:9) = 1.4e-7 + xl(iref(p_o3-1),8:8) = 1.4e-7 + xl(iref(p_o3-1),7:7) = 1.4e-7 + xl(iref(p_o3-1),6:6) = 1.4e-7 + xl(iref(p_o3-1),5:5) = 1.4e-7 + xl(iref(p_o3-1),4:4) = 1.4e-7 + xl(iref(p_o3-1),3:3) = 1.4e-7 + xl(iref(p_o3-1),2:2) = 1.44e-7 + xl(iref(p_o3-1),1:1) = 2.00e-7 + end if + + if( p_co > 1 ) then + xl(iref(p_co-1),12:16) = 5.0e-7 + xl(iref(p_co-1),11:11) = 5.0e-7 + xl(iref(p_co-1),10:10) = 5.0e-7 + xl(iref(p_co-1),9:9) = 5.0e-7 + xl(iref(p_co-1),8:8) = 5.0e-7 + xl(iref(p_co-1),7:7) = 5.0e-7 + xl(iref(p_co-1),6:6) = 5.0e-7 + xl(iref(p_co-1),5:5) = 5.0e-7 + xl(iref(p_co-1),4:4) = 5.0e-7 + xl(iref(p_co-1),3:3) = 5.0e-7 + xl(iref(p_co-1),2:2) = 6.50e-8 + xl(iref(p_co-1),1:1) = 6.10e-8 + end if + + if( p_so2 > 1 ) then + xl(iref(p_so2-1),12:16) = 6.00e-9 + xl(iref(p_so2-1),11:11) = 1.00e-9 + xl(iref(p_so2-1),10:10) = 4.00e-9 + xl(iref(p_so2-1),9:9) = 5.00e-9 + xl(iref(p_so2-1),8:8) = 2.00e-9 + xl(iref(p_so2-1),7:7) = 2.00e-9 + xl(iref(p_so2-1),6:6) = 5.00e-9 + xl(iref(p_so2-1),5:5) = 4.00e-9 + xl(iref(p_so2-1),4:4) = 5.00e-9 + xl(iref(p_so2-1),3:3) = 1.00e-9 + xl(iref(p_so2-1),2:2) = 2.00e-9 + xl(iref(p_so2-1),1:1) = 5.00e-9 + end if + if( p_no2 > 1 ) then + xl(iref(p_no2-1),12:16) = 5.00e-9 + xl(iref(p_no2-1),11:11) = 5.00e-9 + xl(iref(p_no2-1),10:10) = 5.0e-9 + xl(iref(p_no2-1),9:9) = 5.0e-9 + xl(iref(p_no2-1),8:8) = 5.0e-9 + xl(iref(p_no2-1),7:7) = 5.0e-9 + xl(iref(p_no2-1),6:6) = 5.0e-9 + xl(iref(p_no2-1),5:5) = 5.0e-9 + xl(iref(p_no2-1),4:4) = 5.0e-9 + xl(iref(p_no2-1),3:3) = 5.0e-9 + xl(iref(p_no2-1),2:2) = 2.50e-10 + xl(iref(p_no2-1),1:1) = 2.80e-10 + end if + if( p_h2o2 > 1 ) then + xl(iref(p_h2o2-1),12:16) = 0.18e-9 + xl(iref(p_h2o2-1),11:11) = 0.13e-9 + xl(iref(p_h2o2-1),10:10) = 0.30e-9 + xl(iref(p_h2o2-1),9:9) = 0.77e-9 + xl(iref(p_h2o2-1),8:8) = 0.30e-9 + xl(iref(p_h2o2-1),7:7) = 0.25e-9 + xl(iref(p_h2o2-1),6:6) = 0.21e-9 + xl(iref(p_h2o2-1),5:5) = 0.23e-9 + xl(iref(p_h2o2-1),4:4) = 0.24e-9 + xl(iref(p_h2o2-1),3:3) = 0.36e-9 + xl(iref(p_h2o2-1),2:2) = 0.15e-10 + xl(iref(p_h2o2-1),1:1) = 0.17e-10 + end if + + if( p_hno3 > 1 ) then + xl(iref(p_hno3-1),12:16) = 2.0e-10 + xl(iref(p_hno3-1),11:11) = 2.0e-10 + xl(iref(p_hno3-1),10:10) = 2.0e-10 + xl(iref(p_hno3-1),9:9) = 2.0e-10 + xl(iref(p_hno3-1),8:8) = 2.0e-10 + xl(iref(p_hno3-1),7:7) = 2.0e-10 + xl(iref(p_hno3-1),6:6) = 2.0e-10 + xl(iref(p_hno3-1),5:5) = 2.0e-10 + xl(iref(p_hno3-1),4:4) = 2.0e-10 + xl(iref(p_hno3-1),3:3) = 0.57e-10 + xl(iref(p_hno3-1),2:2) = 0.17e-9 + xl(iref(p_hno3-1),1:1) = 0.12e-9 + end if + if( p_no3 > 1 ) then + xl(iref(p_no3-1),12:16) = 0.98e-11 + xl(iref(p_no3-1),11:11) = 0.58e-11 + xl(iref(p_no3-1),10:10) = 0.53e-11 + xl(iref(p_no3-1),9:9) = 0.53e-11 + xl(iref(p_no3-1),8:8) = 0.68e-11 + xl(iref(p_no3-1),7:7) = 0.25e-11 + xl(iref(p_no3-1),6:6) = 0.82e-11 + xl(iref(p_no3-1),5:5) = 0.21e-11 + xl(iref(p_no3-1),4:4) = 0.39e-11 + xl(iref(p_no3-1),3:3) = 0.57e-10 + xl(iref(p_no3-1),2:2) = 0.17e-9 + xl(iref(p_no3-1),1:1) = 0.12e-9 + end if + + if( p_n2o5 > 1 ) then + xl(iref(p_n2o5-1),12:16) = 0.12e-14 + xl(iref(p_n2o5-1),11:11) = 0.11e-12 + xl(iref(p_n2o5-1),10:10) = 0.20e-12 + xl(iref(p_n2o5-1),9:9) = 0.25e-12 + xl(iref(p_n2o5-1),8:8) = 0.98e-12 + xl(iref(p_n2o5-1),7:7) = 0.12e-11 + xl(iref(p_n2o5-1),6:6) = 0.13e-11 + xl(iref(p_n2o5-1),5:5) = 0.45e-12 + xl(iref(p_n2o5-1),4:4) = 0.38e-12 + xl(iref(p_n2o5-1),3:3) = 0.94e-12 + xl(iref(p_n2o5-1),2:2) = 0.16e-11 + xl(iref(p_n2o5-1),1:1) = 0.11e-11 + end if + if( p_nh3 > 1 ) then + xl(iref(p_nh3-1),12:16) = 0.14e-9 + xl(iref(p_nh3-1),11:11) = 0.60e-10 + xl(iref(p_nh3-1),10:10) = 0.30e-10 + xl(iref(p_nh3-1),9:9) = 0.24e-10 + xl(iref(p_nh3-1),8:8) = 0.49e-11 + xl(iref(p_nh3-1),7:7) = 0.19e-11 + xl(iref(p_nh3-1),6:6) = 0.41e-11 + xl(iref(p_nh3-1),5:5) = 0.11e-11 + xl(iref(p_nh3-1),4:4) = 0.52e-11 + xl(iref(p_nh3-1),3:3) = 0.35e-10 + xl(iref(p_nh3-1),2:2) = 0.86e-11 + xl(iref(p_nh3-1),1:1) = 0.84e-11 + end if + if( p_hcho > 1 ) then + xl(iref(p_hcho-1),12:16) = 2.00e-9 + xl(iref(p_hcho-1),11:11) = 2.0e-9 + xl(iref(p_hcho-1),10:10) = 2.0e-9 + xl(iref(p_hcho-1),9:9) = 2.00e-9 + xl(iref(p_hcho-1),8:8) = 2.00e-9 + xl(iref(p_hcho-1),7:7) = 2.00e-9 + xl(iref(p_hcho-1),6:6) = 2.00e-9 + xl(iref(p_hcho-1),5:5) = 2.00e-9 + xl(iref(p_hcho-1),4:4) = 2.00e-9 + xl(iref(p_hcho-1),3:3) = 2.00e-9 + xl(iref(p_hcho-1),2:2) = 2.00e-9 + xl(iref(p_hcho-1),1:1) = 1.40e-11 + end if + if( p_ket > 1 ) then + xl(iref(p_ket-1),12:16) = 0.19e-9 + xl(iref(p_ket-1),11:11) = 0.15e-9 + xl(iref(p_ket-1),10:10) = 0.13e-9 + xl(iref(p_ket-1),9:9) = 0.98e-10 + xl(iref(p_ket-1),8:8) = 0.54e-10 + xl(iref(p_ket-1),7:7) = 0.46e-10 + xl(iref(p_ket-1),6:6) = 0.66e-10 + xl(iref(p_ket-1),5:5) = 0.64e-10 + xl(iref(p_ket-1),4:4) = 0.68e-10 + xl(iref(p_ket-1),3:3) = 0.63e-10 + xl(iref(p_ket-1),2:2) = 0.91e-11 + xl(iref(p_ket-1),1:1) = 0.55e-11 + end if + if( p_par > 1 ) then + xl(iref(p_par-1),12:16) = 0.75e-10+0.68e-10 + xl(iref(p_par-1),11:11) = 0.50e-10+0.21e-10 + xl(iref(p_par-1),10:10) = 0.41e-10+0.11e-10 + xl(iref(p_par-1),9:9) = 0.37e-10+0.17e-10 + xl(iref(p_par-1),8:8) = 0.24e-10+0.53e-11 + xl(iref(p_par-1),7:7) = 0.22e-10+0.45e-11 + xl(iref(p_par-1),6:6) = 0.31e-10+0.79e-11 + xl(iref(p_par-1),5:5) = 0.28e-10+0.22e-11 + xl(iref(p_par-1),4:4) = 0.29e-10+0.26e-11 + xl(iref(p_par-1),3:3) = 0.29e-10+0.43e-11 + xl(iref(p_par-1),2:2) = 0.16e-10+0.18e-12 + xl(iref(p_par-1),1:1) = 0.17e-10+0.26e-12 + end if + if( p_olt > 1 ) then + xl(iref(p_olt-1),12:16) = 0.54e-13 + xl(iref(p_olt-1),11:11) = 0.52e-13 + xl(iref(p_olt-1),10:10) = 0.33e-13 + xl(iref(p_olt-1),9:9) = 0.16e-13 + xl(iref(p_olt-1),8:8) = 0.20e-14 + xl(iref(p_olt-1),7:7) = 0.14e-14 + xl(iref(p_olt-1),6:6) = 0.37e-14 + xl(iref(p_olt-1),5:5) = 0.26e-15 + xl(iref(p_olt-1),4:4) = 0.40e-15 + xl(iref(p_olt-1),3:3) = 0.15e-14 + xl(iref(p_olt-1),2:2) = 0.33e-17 + xl(iref(p_olt-1),1:1) = 0.27e-15 + end if + if( p_ol2 > 1 ) then + xl(iref(p_ol2-1),12:16) = 0.87e-12 + xl(iref(p_ol2-1),11:11) = 0.10e-11 + xl(iref(p_ol2-1),10:10) = 0.68e-12 + xl(iref(p_ol2-1),9:9) = 0.38e-12 + xl(iref(p_ol2-1),8:8) = 0.38e-12 + xl(iref(p_ol2-1),7:7) = 0.45e-13 + xl(iref(p_ol2-1),6:6) = 0.58e-13 + xl(iref(p_ol2-1),5:5) = 0.52e-14 + xl(iref(p_ol2-1),4:4) = 0.12e-13 + xl(iref(p_ol2-1),3:3) = 0.66e-13 + xl(iref(p_ol2-1),2:2) = 0.14e-14 + xl(iref(p_ol2-1),1:1) = 0.51e-13 + end if + if( p_ald > 1 ) then + xl(iref(p_ald-1),12:16) = 0.30e-10 + xl(iref(p_ald-1),11:11) = 0.28e-10 + xl(iref(p_ald-1),10:10) = 0.22e-10 + xl(iref(p_ald-1),9:9) = 0.16e-10 + xl(iref(p_ald-1),8:8) = 0.10e-10 + xl(iref(p_ald-1),7:7) = 0.83e-11 + xl(iref(p_ald-1),6:6) = 0.89e-11 + xl(iref(p_ald-1),5:5) = 0.93e-11 + xl(iref(p_ald-1),4:4) = 0.98e-11 + xl(iref(p_ald-1),3:3) = 0.10e-10 + xl(iref(p_ald-1),2:2) = 0.93e-12 + xl(iref(p_ald-1),1:1) = 0.64e-12 + end if + if( p_tol > 1 ) then + xl(iref(p_tol-1),12:16) = 0.29e-11/2.0 + xl(iref(p_tol-1),11:11) = 0.16e-11/2.0 + xl(iref(p_tol-1),10:10) = 0.12e-11/2.0 + xl(iref(p_tol-1),9:9) = 0.97e-12/2.0 + xl(iref(p_tol-1),8:8) = 0.16e-12/2.0 + xl(iref(p_tol-1),7:7) = 0.13e-12/2.0 + xl(iref(p_tol-1),6:6) = 0.13e-12/2.0 + xl(iref(p_tol-1),5:5) = 0.28e-13/2.0 + xl(iref(p_tol-1),4:4) = 0.42e-13/2.0 + xl(iref(p_tol-1),3:3) = 0.12e-12/2.0 + xl(iref(p_tol-1),2:2) = 0.39e-15/2.0 + xl(iref(p_tol-1),1:1) = 0.11e-14/2.0 + end if + if( p_xyl > 1 ) then + xl(iref(p_xyl-1),12:16) = 0.29e-11/2.0 + xl(iref(p_xyl-1),11:11) = 0.16e-11/2.0 + xl(iref(p_xyl-1),10:10) = 0.12e-11/2.0 + xl(iref(p_xyl-1),9:9) = 0.97e-12/2.0 + xl(iref(p_xyl-1),8:8) = 0.16e-12/2.0 + xl(iref(p_xyl-1),7:7) = 0.13e-12/2.0 + xl(iref(p_xyl-1),6:6) = 0.13e-12/2.0 + xl(iref(p_xyl-1),5:5) = 0.28e-13/2.0 + xl(iref(p_xyl-1),4:4) = 0.42e-13/2.0 + xl(iref(p_xyl-1),3:3) = 0.12e-12/2.0 + xl(iref(p_xyl-1),2:2) = 0.39e-15/2.0 + xl(iref(p_xyl-1),1:1) = 0.11e-14/2.0 + end if + if( p_eth > 1 ) then + xl(iref(p_eth-1),12:16) = 0.60e-9 + xl(iref(p_eth-1),11:11) = 0.63e-9 + xl(iref(p_eth-1),10:10) = 0.49e-9 + xl(iref(p_eth-1),9:9) = 0.51e-9 + xl(iref(p_eth-1),8:8) = 0.44e-9 + xl(iref(p_eth-1),7:7) = 0.43e-9 + xl(iref(p_eth-1),6:6) = 0.45e-9 + xl(iref(p_eth-1),5:5) = 0.47e-9 + xl(iref(p_eth-1),4:4) = 0.48e-9 + xl(iref(p_eth-1),3:3) = 0.47e-9 + xl(iref(p_eth-1),2:2) = 0.38e-9 + xl(iref(p_eth-1),1:1) = 0.36e-9 + end if + +#endif + #if (CASENAME == 2) if( p_o3 > 1 ) then xl(iref(p_o3-1),12:16) = 2.50e-8 @@ -3459,10 +3784,8 @@ subroutine chem_dbg(i,j,k,dtstep,itimestep, & print*,"e_ch3oh:",emis_ant(i,k,j,p_e_ch3oh)*convg print*,"e_c2h5oh:",emis_ant(i,k,j,p_e_c2h5oh)*convg print*,"e_iso:",emis_ant(i,k,j,p_e_iso)*convg - print*,"e_so4 f,c:",emis_ant(i,k,j,p_e_so4j)*conva, & - emis_ant(i,k,j,p_e_so4c(i,k,j)*conva - print*,"e_no3 f,c:",emis_ant(i,k,j,p_e_no3j)*conva, & - emis_ant(i,k,j,p_e_no3c(i,k,j)*conva + print*,"e_so4 f,c:",emis_ant(i,k,j,p_e_so4j)*conva + print*,"e_no3 f,c:",emis_ant(i,k,j,p_e_no3j)*conva print*,"e_orgc:",emis_ant(i,k,j,p_e_orgc)*conva print*,"e_ecc:",emis_ant(i,k,j,p_e_ecc)*conva print* diff --git a/chem/module_mosaic_addemiss.F b/chem/module_mosaic_addemiss.F index 6bc7020588..6c46d7230e 100644 --- a/chem/module_mosaic_addemiss.F +++ b/chem/module_mosaic_addemiss.F @@ -30,7 +30,9 @@ MODULE module_mosaic_addemiss !---------------------------------------------------------------------- subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & config_flags, chem, slai, ust, smois, ivgtyp, isltyp, & - emis_ant, & + emis_ant,ebu,biom_active,dust_opt, & + !czhao + ktau,p8w, u_phy,v_phy,rho_phy,g,dx,erod, & ! GOCART DUST dust_emiss_active, seasalt_emiss_active, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -56,7 +58,16 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte - INTEGER, INTENT(IN) :: dust_emiss_active, seasalt_emiss_active + INTEGER, INTENT(IN) :: dust_emiss_active, seasalt_emiss_active, biom_active, dust_opt + + !czhao + INTEGER, INTENT(IN) :: ktau + REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , & + INTENT(IN) :: p8w, u_phy,v_phy,rho_phy + REAL, INTENT(IN ) :: dx, g + REAL, DIMENSION( ims:ime, jms:jme,3),& + INTENT(IN ) :: erod + REAL, INTENT(IN ) :: dtstep @@ -77,6 +88,10 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & INTENT(IN ) :: & emis_ant + REAL, DIMENSION( ims:ime, kms:kme, jms:jme,num_ebu ), & + INTENT(IN ) :: & + ebu + ! 1/(dry air density) and layer thickness (m) REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , & INTENT(IN ) :: alt, dz8w @@ -97,7 +112,10 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! fraction of sorgam i/aitken mode emissions that go to each ! of the mosaic 8 "standard" sections - real, save :: fr8b_aem_sorgam_i(8) = & +!now the anthropogenic and biomass burning emissiosn use same distribution +!it can be improve later --czhao +! not 100%, because most mass falling down to the size less than the lowest boundary + real, save :: fr8b_aem_sorgam_i(8) = & (/ 0.965, 0.035, 0.000, 0.000, & 0.000, 0.000, 0.000, 0.000 /) @@ -109,6 +127,7 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! fraction of sorgam coarse mode emissions that go to each ! of the mosaic 8 "standard" sections +! not 100%, because most mass falling up to the size larger than the highest boundary real, save :: fr8b_aem_sorgam_c(8) = & (/ 0.000, 0.000, 0.000, 0.002, & 0.021, 0.110, 0.275, 0.592 /) @@ -156,6 +175,11 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & iphase = ai_phase + if (num_ebu.le.0 ) then + print*,'no biomass burning species',num_ebu + stop + endif + ! ! compute factors used for apportioning either ! the MADE-SORGAM emissions (i=aitken, j=accum, c=coarse modes) OR @@ -165,7 +189,7 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! note: the fr8b_aer_xxxxxx_y values are specific to the mosaic 8 bin ! structure with dlo_sect(1)=0.039 um and dhi_sect(8)=10.0 um, ! also, the fr8b_aem_sorgam_y are specific for the assumed -! dgvem_i/j/c used in the sorgam code +! dgvem_i/j/c used in the module_data_sorgam.F code ! also, the fr8b_aem_mosaic_y values are specific for the assumed (by us) ! size distribution for fine and coarse primary emissions ! @@ -226,7 +250,7 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! when mosaic_addemiss_active <= 0, set fr's to zero, ! which causes the changes to chem(...) to be zero - if (mosaic_addemiss_active <= 0) then + if (mosaic_addemiss_active <= 0.and.biom_active.le.0) then fr_aem_sorgam_i(:) = 0.0 fr_aem_sorgam_j(:) = 0.0 fr_aem_sorgam_c(:) = 0.0 @@ -269,31 +293,36 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! compute mass emissions [(ug/m3)*m/s] for each species ! using the apportioning fractions - aem_so4 = fr_aem_mosaic_f(n)*emis_ant(i,k,j,p_e_so4j) & +! czhao add biomass burning emissions here for MOSAIC aerosols + aem_so4 = fr_aem_mosaic_f(n)*(emis_ant(i,k,j,p_e_so4j)+ebu(i,k,j,p_ebu_sulf)) & + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_so4c) & - + fr_aem_sorgam_i(n)*emis_ant(i,k,j,p_e_so4i) & - + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_so4j) + + fr_aem_sorgam_i(n)*(emis_ant(i,k,j,p_e_so4i)+0.25*ebu(i,k,j,p_ebu_sulf)) & + + fr_aem_sorgam_j(n)*(emis_ant(i,k,j,p_e_so4j)+0.75*ebu(i,k,j,p_ebu_sulf)) aem_no3 = fr_aem_mosaic_f(n)*emis_ant(i,k,j,p_e_no3j) & + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_no3c) & + fr_aem_sorgam_i(n)*emis_ant(i,k,j,p_e_no3i) & - + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_no3j) + + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_no3j) - aem_oc = fr_aem_mosaic_f(n)*emis_ant(i,k,j,p_e_orgj) & + aem_oc = fr_aem_mosaic_f(n)*(emis_ant(i,k,j,p_e_orgj)+ebu(i,k,j,p_ebu_oc)) & + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_orgc) & - + fr_aem_sorgam_i(n)*emis_ant(i,k,j,p_e_orgi) & - + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_orgj) + + fr_aem_sorgam_i(n)*(emis_ant(i,k,j,p_e_orgi)+0.25*ebu(i,k,j,p_ebu_oc)) & + + fr_aem_sorgam_j(n)*(emis_ant(i,k,j,p_e_orgj)+0.75*ebu(i,k,j,p_ebu_oc)) + + chem_select_1 : SELECT CASE( config_flags%chem_opt ) + CASE(SAPRC99_MOSAIC_4BIN_VBS2_KPP) ! Set the oc to zero for VBS + aem_oc = 0.0 + END SELECT chem_select_1 - aem_bc = fr_aem_mosaic_f(n)*emis_ant(i,k,j,p_e_ecj) & - + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_ecc) & - + fr_aem_sorgam_i(n)*emis_ant(i,k,j,p_e_eci) & - + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_ecj) + aem_bc = fr_aem_mosaic_f(n)*(emis_ant(i,k,j,p_e_ecj)+ebu(i,k,j,p_ebu_bc)) & + + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_ecc) & + + fr_aem_sorgam_i(n)*(emis_ant(i,k,j,p_e_eci)+0.25*ebu(i,k,j,p_ebu_bc)) & + + fr_aem_sorgam_j(n)*(emis_ant(i,k,j,p_e_ecj)+0.75*ebu(i,k,j,p_ebu_bc)) - aem_oin = fr_aem_mosaic_f(n)*emis_ant(i,k,j,p_e_pm25j) & + aem_oin = fr_aem_mosaic_f(n)*(emis_ant(i,k,j,p_e_pm25j)+ebu(i,k,j,p_ebu_pm25)) & + fr_aem_mosaic_c(n)*emis_ant(i,k,j,p_e_pm_10) & - + fr_aem_sorgam_i(n)*emis_ant(i,k,j,p_e_pm25i) & - + fr_aem_sorgam_j(n)*emis_ant(i,k,j,p_e_pm25j) & - + fr_aem_sorgam_c(n)*emis_ant(i,k,j,p_e_pm_10) + + fr_aem_sorgam_i(n)*(emis_ant(i,k,j,p_e_pm25i)+0.25*ebu(i,k,j,p_ebu_pm25)) & + + fr_aem_sorgam_j(n)*(emis_ant(i,k,j,p_e_pm25j)+0.75*ebu(i,k,j,p_ebu_pm25)) ! emissions for these species are currently zero aem_nh4 = 0.0 @@ -403,12 +432,22 @@ subroutine mosaic_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, & ! ! do dust emissions ! jdf: preliminary version that has not been made generic for situation - if (dust_emiss_active > 0) & + if (dust_opt == 2) then call mosaic_dust_emiss( slai, ust, smois, ivgtyp, isltyp, & id, dtstep, u10, v10, alt, dz8w, xland, config_flags, chem, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) + endif + if (dust_opt == 3) then + call mosaic_dust_gocartemis (ktau,dtstep,config_flags%num_soil_layers,alt,u_phy, & + v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod, & + ivgtyp,isltyp,xland,dx,g, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + endif + return @@ -477,8 +516,11 @@ subroutine mosaic_seasalt_emiss( & ! compute emissions factors for each size bin ! (limit emissions to dp > 0.1 micrometer) do n = 1, nsize_aer(itype) - dumdlo = max( dlo_sect(n,itype), 0.1e-4 ) - dumdhi = max( dhi_sect(n,itype), 0.1e-4 ) +! changed the lower bound of the emission size limit to match lowest section edge, Qing.Yang@pnl.gov +! dumdlo = max( dlo_sect(n,itype), 0.1e-4 ) +! dumdhi = max( dhi_sect(n,itype), 0.1e-4 ) + dumdlo = max( dlo_sect(n,itype), 0.02e-4 ) + dumdhi = max( dhi_sect(n,itype), 0.02e-4 ) call seasalt_emitfactors_1bin( 1, dumdlo, dumdhi, & ssemfact_numb(n,itype), dum, ssemfact_mass(n,itype) ) @@ -822,10 +864,10 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & ! dust emission rates. ! 5) Other departures' from Shaw et al. noted below, but are probably not as ! important as 2) and 3). -! +! 6) Now the dust added into dust species USE module_configure, only: grid_config_rec_type - USE module_state_description, only: num_chem, param_first_scalar + USE module_state_description, only: num_chem, param_first_scalar USE module_data_mosaic_asect IMPLICIT NONE @@ -871,6 +913,7 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & real :: gamma(4), delta(4) real :: sz(8) real :: dustflux, densdust, mass1part + real :: c_const p1st = param_first_scalar ! @@ -926,14 +969,18 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & ! sz(6)=0.0951896 ! sz(7)=0.17 ! sz(8)=0.67 +! sz(1)=1.78751e-06 +! sz(2)=0.00875357 +! sz(3)=0.1512446 +! sz(4)=0.84 sz(1)=0.0 sz(2)=0.0 sz(3)=0.0005 sz(4)=0.0095 - sz(5)=0.03 - sz(6)=0.10 - sz(7)=0.18 - sz(8)=0.68 + sz(5)=0.01 + sz(6)=0.06 + sz(7)=0.20 + sz(8)=0.72 ! for now just do itype=1 itype = 1 @@ -973,6 +1020,7 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & f8=0.005 f50=0.00 f51=0.10 + f51=0.066 f52=0.00 alphamask=(f8+f50)*1.0+(f51+f52)*0.5 endif @@ -981,6 +1029,7 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & f50=0.00 f51=0.00 f52=0.15 + f52=0.10 alphamask=(f8+f50)*1.0+(f51+f52)*0.5 endif if (ivgtyp(i,j) .eq. 10) then @@ -1061,6 +1110,7 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & ! part5 - dustflux ! lower bound on ustar = 20 cm/s as in Shaw et al, but set upper ! bound to 100 cm/s + c_const=1.e-14 ! default ustar1=ust(i,j)*100.0 if(ustar1.gt.100.0) ustar1=100.0 @@ -1069,7 +1119,7 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & if(ustar1.le.ustart) then dustflux=0.0 else - dustflux=1.0e-14*(ustar1**4)*(1.0-(ustart/ustar1)) + dustflux=c_const*(ustar1**4)*(1.0-(ustart/ustar1)) endif dustflux=dustflux*10.0 ! units kg m-2 s-1 @@ -1119,6 +1169,279 @@ subroutine mosaic_dust_emiss( slai,ust, smois, ivgtyp, isltyp, & END subroutine mosaic_dust_emiss +!==================================================================================== +!add another dust emission scheme following GOCART mechanism --czhao 09/17/2009 +!==================================================================================== + subroutine mosaic_dust_gocartemis (ktau,dt,num_soil_layers,alt,u_phy, & + v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod, & + ivgtyp,isltyp,xland,dx,g, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + USE module_data_gocart_dust + USE module_configure + USE module_state_description + USE module_model_constants, ONLY: mwdry + USE module_data_mosaic_asect + IMPLICIT NONE + + INTEGER, INTENT(IN ) :: ktau, num_soil_layers, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte + INTEGER,DIMENSION( ims:ime , jms:jme ) , & + INTENT(IN ) :: & + ivgtyp, & + isltyp + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & + INTENT(INOUT ) :: chem + REAL, DIMENSION( ims:ime, num_soil_layers, jms:jme ) , & + INTENT(INOUT) :: smois + REAL, DIMENSION( ims:ime , jms:jme, 3 ) , & + INTENT(IN ) :: erod + REAL, DIMENSION( ims:ime , jms:jme ) , & + INTENT(IN ) :: & + u10, & + v10, & + xland + REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), & + INTENT(IN ) :: & + alt, & + dz8w,p8w, & + u_phy,v_phy,rho_phy + + REAL, INTENT(IN ) :: dt,dx,g +! +! local variables +! + integer :: nmx,i,j,k,ndt,imx,jmx,lmx + integer ilwi, start_month + real*8, DIMENSION (3) :: erodin + real*8, DIMENSION (5) :: bems + real*8 w10m,gwet,airden,airmas + real*8 cdustemis,jdustemis,cdustcon,jdustcon + real*8 cdustdens,jdustdens,mass1part,jdustdiam,cdustdiam,dp_meanvol_tmp + real factaa, factbb, fracoin, fracca, fracco3, fractot + real*8 dxy + real*8 conver,converi + real dttt + real soilfacj,rhosoilj,rhosoilc + integer p1st,l_oin,l,n + real :: densdust + real sz(8),ftot,frac_10um + real totalemis,accfrac,corfrac,rscale + integer iphase, itype + + rscale=1.01 ! to account for the emitted dust with radius larger than 10 um + accfrac=0.07 ! assign 7% to accumulation mode + corfrac=0.93 ! assign 93% to coarse mode + accfrac=accfrac*rscale + corfrac=corfrac*rscale + + p1st = param_first_scalar + +!czhao give an example of MOSAIC 8 size bins here (unit: um) from Jerome 2005 paper +! 0.039-0.078; 0.078-0.156; 0.156-0.312; 0.312-0.625; 0.625-1.25; 1.25-2.5; 2.5-5.0; 5.0-10.0 +!in the model the size bound for 8 bins is calculated in the code using dlo_sec and dhi_sec +!size3 +! sz(1)=0.0 +! sz(2)=0.0 +! sz(3)=0.0003 +! sz(4)=0.0048 +! sz(5)=0.0130 +! sz(6)=0.0250 +! sz(7)=0.1400 +! sz(8)=0.8169 +!the size is following the best match2 of modal distribution +!we have ~3.6% within 1 um radius and ~7.4% within 1.25 um radius +!versus ~6.0% within 1 um radius following GOCART original and ~9.3% within 1.25 um radius +! totally ~82% are within the MOSAIC size range 0.03-10 um diameter +! now the dust distribution follows the parameter defined in module_data_sorgam.F + sz(1)=1.0e-8 + sz(2)=1.0e-6 + sz(3)=3.0e-4 + sz(4)=3.5e-3 + sz(5)=0.018 + sz(6)=0.070 + sz(7)=0.2595 + sz(8)=0.42 +! frac_10um=sum(sz(1:8)) +! sz(:)=sz(:)/sum(sz(1:8)) ! relative ratio in diameter range of 0-10 um + +! for now just do itype=1 + itype = 1 + iphase = ai_phase + + conver=1.e-9 + converi=1.e9 +! +! number of dust bins + nmx=5 + k=kts + do j=jts,jte + do i=its,ite +! +! don't do dust over water!!! + if(xland(i,j).lt.1.5)then + + ilwi=1 + start_month = 3 ! it doesn't matter, ch_dust is not a month dependent now, a constant + w10m=sqrt(u10(i,j)*u10(i,j)+v10(i,j)*v10(i,j)) + airmas=-(p8w(i,kts+1,j)-p8w(i,kts,j))*dx*dx/g ! kg + +! we don't trust the u10,v10 values, if model layers are very thin near surface + if(dz8w(i,kts,j).lt.12.)w10m=sqrt(u_phy(i,kts,j)*u_phy(i,kts,j)+v_phy(i,kts,j)*v_phy(i,kts,j)) + !erodin(1)=erod(i,j,1)/dx/dx ! czhao erod shouldn't be scaled to the area, because it's a fraction + !erodin(2)=erod(i,j,2)/dx/dx + !erodin(3)=erod(i,j,3)/dx/dx + erodin(1)=erod(i,j,1) + erodin(2)=erod(i,j,2) + erodin(3)=erod(i,j,3) +! +! volumetric soil moisture over porosity + gwet=smois(i,1,j)/porosity(isltyp(i,j)) + ndt=ifix(dt) + airden=rho_phy(i,kts,j) + dxy=dx*dx + + if (i==40.and.j==50) then + print*,'check moisture ',gwet + endif + call mosaic_source_du( nmx, dt, & + erodin, ilwi, dxy, w10m, gwet, airden, airmas, & + bems,start_month,g) + +!bems: kg/timestep/cell + !sum up the dust emission from 0.1-10 um in radius + ! unit change from kg/timestep/cell to ug/m2/s + totalemis=(sum(bems(1:5))/dt)*converi/dxy + !totalemis=totalemis*rscale !to account for the particles larger than 10 um + ! based on assumed size distribution + jdustemis = totalemis*accfrac ! accumulation mode + cdustemis = totalemis*corfrac ! coarse mode + + ftot=jdustemis+cdustemis ! total dust emission in ug/m2/s +! ftot=ftot*frac_10um ! only in diameter range of 0-10um + +! apportion other inorganics only + factaa = (dt/dz8w(i,k,j))*alt(i,k,j) + factbb = factaa * ftot + fracoin = 0.97 + fracca = 0.03*0.4 + fracco3 = 0.03*0.6 + fractot = fracoin + + do 1810 n = 1, nsize_aer(itype) + l_oin = lptr_oin_aer(n,itype,iphase) + if (l_oin >= p1st) then + chem(i,k,j,l_oin) = chem(i,k,j,l_oin) + & + factbb * sz(n) * fracoin +! mass1part is mass of a single particle in ug, density of dust ~2.5 g cm-3 + if (n <= 5) densdust=2.5 + if (n > 5 ) densdust=2.65 + mass1part=0.523598*(dcen_sect(n,itype)**3)*densdust*1.0e06 + l = numptr_aer(n,itype,iphase) + if (l >= p1st) chem(i,k,j,l) = chem(i,k,j,l) + & + factbb * sz(n) * fractot / mass1part + end if +1810 continue + + endif ! xland + enddo ! i + enddo ! j + + +end subroutine mosaic_dust_gocartemis + + SUBROUTINE mosaic_source_du( nmx, dt1, & + erod, ilwi, dxy, w10m, gwet, airden, airmas, & + bems,month,g0) + +! **************************************************************************** +! * Evaluate the source of each dust particles size classes (kg/m3) +! * by soil emission. +! * Input: +! * EROD Fraction of erodible grid cell (-) +! * for 1: Sand, 2: Silt, 3: Clay +! * DUSTDEN Dust density (kg/m3) +! * DXY Surface of each grid cell (m2) +! * AIRVOL Volume occupy by each grid boxes (m3) +! * NDT1 Time step (s) +! * W10m Velocity at the anemometer level (10meters) (m/s) +! * u_tresh Threshold velocity for particule uplifting (m/s) +! * CH_dust Constant to fudge the total emission of dust (s2/m2) +! * +! * Output: +! * DSRC Source of each dust type (kg/timestep/cell) +! * +! * Working: +! * SRC Potential source (kg/m/timestep/cell) +! * +! **************************************************************************** + + USE module_data_gocart_dust + + INTEGER, INTENT(IN) :: nmx + REAL*8, INTENT(IN) :: erod(ndcls) + INTEGER, INTENT(IN) :: ilwi,month + + REAL*8, INTENT(IN) :: w10m, gwet + REAL*8, INTENT(IN) :: dxy + REAL*8, INTENT(IN) :: airden, airmas + REAL*8, INTENT(OUT) :: bems(nmx) + + REAL*8 :: den(nmx), diam(nmx) + REAL*8 :: tsrc, u_ts0, cw, u_ts, dsrc, srce + REAL, intent(in) :: g0 + REAL :: rhoa, g,dt1 + INTEGER :: i, j, n, m, k + + ! default is 1 ug s2 m-5 == 1.e-9 kg s2 m-5 + !ch_dust(:,:)=0.8D-9 ! ch_dust is defined here instead of in the chemics_ini.F if with SORGAM -czhao + ch_dust(:,:)=1.0D-9 ! default + !ch_dust(:,:)=0.65D-9 ! ch_dust is scaled for Sahara + + ! executable statemenst + DO n = 1, nmx + ! Threshold velocity as a function of the dust density and the diameter from Bagnold (1941) + den(n) = den_dust(n)*1.0D-3 + diam(n) = 2.0*reff_dust(n)*1.0D2 + g = g0*1.0E2 + ! Pointer to the 3 classes considered in the source data files + m = ipoint(n) + tsrc = 0.0 + rhoa = airden*1.0D-3 + u_ts0 = 0.13*1.0D-2*SQRT(den(n)*g*diam(n)/rhoa)* & + SQRT(1.0+0.006/den(n)/g/(diam(n))**2.5)/ & + SQRT(1.928*(1331.0*(diam(n))**1.56+0.38)**0.092-1.0) + + ! Case of surface dry enough to erode + IF (gwet < 0.5) THEN ! Pete's modified value +! IF (gwet < 0.2) THEN + u_ts = MAX(0.0D+0,u_ts0*(1.2D+0+2.0D-1*LOG10(MAX(1.0D-3, gwet)))) + ELSE + ! Case of wet surface, no erosion + u_ts = 100.0 + END IF + srce = frac_s(n)*erod(m)*dxy ! (m2) + IF (ilwi == 1 ) THEN + dsrc = ch_dust(n,month)*srce*w10m**2 & + * (w10m - u_ts)*dt1 ! (kg) + ELSE + dsrc = 0.0 + END IF + IF (dsrc < 0.0) dsrc = 0.0 + + ! Update dust mixing ratio at first model level. + !tc(n) = tc(n) + dsrc / airmas !kg/kg-dryair -czhao + bems(n) = dsrc ! kg/timestep/cell + + ENDDO + +END SUBROUTINE mosaic_source_du + +!=========================================================================== + !---------------------------------------------------------------------- subroutine addemiss_masscheck( id, config_flags, iflagaa, fromwhere, & dtstep, efact1, dz8w, chem, chem_sum, & diff --git a/chem/module_mosaic_cloudchem.F b/chem/module_mosaic_cloudchem.F index 6e15bcbf2c..9938decee3 100644 --- a/chem/module_mosaic_cloudchem.F +++ b/chem/module_mosaic_cloudchem.F @@ -408,7 +408,7 @@ subroutine interface_to_aqoperator1( & use module_state_description, only: & num_chem, param_first_scalar, p_qc, & - p_nh3, p_hno3, p_hcl, p_sulf, p_hcho, & + p_nh3, p_hno3, p_hcl, p_sulf, p_h2so4, p_hcho, & p_ora1, p_so2, p_h2o2, p_o3, p_ho, & p_ho2, p_no3, p_no, p_no2, p_hono, & p_pan, p_ch3o2, p_ch3oh, p_op1 @@ -569,7 +569,9 @@ subroutine interface_to_aqoperator1( & gas(nga ) = rbox(p_nh3 ) * factgas gas(ngn ) = rbox(p_hno3 ) * factgas gas(ngc ) = rbox(p_hcl ) * factgas - gas(ng4 ) = rbox(p_sulf ) * factgas + if(p_sulf > param_first_scalar ) gas(ng4 ) = rbox(p_sulf ) * factgas + if(p_h2so4 > param_first_scalar ) gas(ng4 ) = rbox(p_h2so4 ) * factgas + gas(nghcho ) = rbox(p_hcho ) * factgas gas(nghcooh ) = rbox(p_ora1 ) * factgas @@ -641,7 +643,7 @@ subroutine interface_to_aqoperator1( & write(lunxx,9875) gas write(lunxx,*) 'rbox(nh3, hno3, hcl, h2so4, so2, h2o2, o3)' write(lunxx,9875) rbox(p_nh3), rbox(p_hno3), rbox(p_hcl), & - rbox(p_sulf), rbox(p_so2), rbox(p_h2o2), rbox(p_o3) + rbox(p_sulf),rbox(p_h2so4), rbox(p_so2), rbox(p_h2o2), rbox(p_o3) write(lunxx,*) 'aerosol (1=na, 3=nh4, 4=no3, 5=cl, 6=so4, 8=ec, 9=oc, 10=crus)' write(lunxx,9875) aerosol write(lunxx,*) 'rbulk_cwaer (1=so4, 2=no3, 3-cl, 4=nh4, 5=na, 6=oin, 7=bc, 8=oc)' @@ -814,7 +816,9 @@ subroutine interface_to_aqoperator1( & rbox(p_nh3 ) = gas(nga ) / factgas rbox(p_hno3 ) = gas(ngn ) / factgas rbox(p_hcl ) = gas(ngc ) / factgas - rbox(p_sulf ) = gas(ng4 ) / factgas + if(p_sulf .gt. param_first_scalar) rbox(p_sulf ) = gas(ng4) / factgas + if(p_h2so4 .gt. param_first_scalar) rbox(p_h2so4 ) = gas(ng4) / factgas + rbox(p_hcho ) = gas(nghcho ) / factgas rbox(p_ora1 ) = gas(nghcooh ) / factgas @@ -841,8 +845,10 @@ subroutine interface_to_aqoperator1( & gas_aqfrac_box(p_hno3 ) = gas_aqfrac_cmu(ngn ) if (p_hcl .le. numgas_aqfrac) & gas_aqfrac_box(p_hcl ) = gas_aqfrac_cmu(ngc ) - if (p_sulf .le. numgas_aqfrac) & + if (p_sulf .le. numgas_aqfrac .and. p_sulf .gt. param_first_scalar) & gas_aqfrac_box(p_sulf ) = gas_aqfrac_cmu(ng4 ) + if (p_h2so4 .le. numgas_aqfrac .and. p_h2so4 .gt. param_first_scalar) & + gas_aqfrac_box(p_h2so4 ) = gas_aqfrac_cmu(ng4 ) if (p_hcho .le. numgas_aqfrac) & gas_aqfrac_box(p_hcho ) = gas_aqfrac_cmu(nghcho ) @@ -898,7 +904,7 @@ subroutine interface_to_aqoperator1( & write(lunxx,9875) gas write(lunxx,*) 'rbox(nh3, hno3, hcl, h2so4, so2, h2o2, o3)' write(lunxx,9875) rbox(p_nh3), rbox(p_hno3), rbox(p_hcl), & - rbox(p_sulf), rbox(p_so2), rbox(p_h2o2), rbox(p_o3) + rbox(p_sulf), rbox(p_h2so4), rbox(p_so2), rbox(p_h2o2), rbox(p_o3) write(lunxx,*) 'aerosol (1=na, 3=nh4, 4=no3, 5=cl, 6=so4, 8=ec, 9=oc, 10=crus)' write(lunxx,9875) aerosol write(lunxx,*) 'rbulk_cwaer (1=so4, 2=no3, 3-cl, 4=nh4, 5=na, 6=oin, 7=bc, 8=oc)' diff --git a/chem/module_mosaic_coag.F b/chem/module_mosaic_coag.F index 0d97c9dccc..017324b3d2 100644 --- a/chem/module_mosaic_coag.F +++ b/chem/module_mosaic_coag.F @@ -633,7 +633,7 @@ subroutine coagsolv( & ! integer iradmaxd_wrk, iaertymaxd_wrk parameter (iradmaxd_wrk=16) - parameter (iaertymaxd_wrk=32) + parameter (iaertymaxd_wrk=150) integer irad integer iaerty diff --git a/chem/module_mosaic_driver.F b/chem/module_mosaic_driver.F index 89cc222f54..c302ceaa88 100644 --- a/chem/module_mosaic_driver.F +++ b/chem/module_mosaic_driver.F @@ -1,5 +1,3 @@ -!************************************************************************ -! This computer software was prepared by Battelle Memorial Institute, ! hereinafter the Contractor, under Contract No. DE-AC05-76RL0 1830 with ! the Department of Energy (DOE). NEITHER THE GOVERNMENT NOR THE ! CONTRACTOR MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY @@ -48,6 +46,13 @@ ! efficient multicomponent equilibrium solver for aerosols (MESA), J. ! Geophys. Res., 110, D24203, doi:24203, doi:10.1029/2004JD005618. ! +! Reference for volatility basis set SOA code: +! * Shrivastava, M., J. Fast, R. Easter, W. I. Gustafson Jr., R. A. +! Zaveri, J. L. Jimenez, P. Saide, and A. Hodzic, 2010: Modeling +! organic aerosols in a megacity: comparison of simple and complex +! representations of the volatility basis set approach. Atmos. Chem. +! Phys., in review. +! ! References for implementation of the aerosol optical properties and ! direct effect in WRF-Chem: ! * Fast, J.D., W.I. Gustafson Jr., R.C. Easter, R.A. Zaveri, J.C. @@ -56,10 +61,11 @@ ! vicinity of Houston using a fully-coupled meteorology-chemistry- ! aerosol model, J. Geophys. Res., 111, D21305, ! doi:10.1029/2005JD006721. -! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, et al. -! (2009), Closure on the single scattering albedo in the WRF-Chem -! framework using data from the MILAGRO campaign, Atmos. Chem. Phys., -! submitted. +! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, and +! A. Laskin (2010), Technical note: evaluation of the WRF-Chem +! "aerosol chemical to aerosol optical properties" module using data +! from the MILAGRO campaign, Atmos. Chem. Phys., 10, 7325-7340, +! doi:10.5194/acp-10-7325-2010. ! ! References for implementation of the aerosol-cloud interactions and ! indirect effects in WRF-Chem: @@ -119,7 +125,7 @@ module module_mosaic_driver subroutine mosaic_aerchem_driver( & id, curr_secs, ktau, dtstep, ktauc, dtstepc, config_flags, & t_phy, rho_phy, p_phy, & - moist, chem, & + moist, chem,vbs_nbin, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -176,7 +182,8 @@ subroutine mosaic_aerchem_driver( & id, ktau, ktauc, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & - its, ite, jts, jte, kts, kte + its, ite, jts, jte, kts, kte, & + vbs_nbin ! id - domain index ! ktau - time step number ! ktauc - gas and aerosol chemistry time step number @@ -384,7 +391,7 @@ subroutine mosaic_aerchem_driver( & print 93010, 'calling aerchem - it,jt,maerchem =', it, jt, maerchem ! print 93010, 'calling aerchem - it,jt,maerchem =', it, jt, maerchem call aerchemistry( it, jt, kclm_calcbgn, kclm_calcend, & - dtchem, idiagaa_dum ) + dtchem, idiagaa_dum,vbs_nbin ) ! note units for aerosol is now ug/m3 @@ -495,7 +502,13 @@ subroutine sum_pm_mosaic ( & + chem(i,k,j,lptr_na_aer(n,itype,iphase)) & + chem(i,k,j,lptr_oin_aer(n,itype,iphase)) & + chem(i,k,j,lptr_oc_aer(n,itype,iphase)) & - + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) + + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) + + + + + + pm2_5_dry(i,k,j) = pm2_5_dry(i,k,j) + mass @@ -521,7 +534,10 @@ subroutine sum_pm_mosaic ( & + chem(i,k,j,lptr_na_aer(n,itype,iphase)) & + chem(i,k,j,lptr_oin_aer(n,itype,iphase)) & + chem(i,k,j,lptr_oc_aer(n,itype,iphase)) & - + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) + + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) + + + enddo enddo enddo @@ -543,6 +559,1821 @@ subroutine sum_pm_mosaic ( & end subroutine sum_pm_mosaic !----------------------------------------------------------------------- +!----------------------------------------------------------------------- + subroutine sum_pm_mosaic_vbs2 ( & + alt, chem, & + pm2_5_dry, pm2_5_water, pm2_5_dry_ec, pm10, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + + USE module_state_description, only: num_chem + USE module_data_mosaic_asect + IMPLICIT NONE + + INTEGER, INTENT(IN ) :: & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(IN) :: alt + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & + INTENT(IN ) :: chem + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(OUT) :: pm2_5_dry,pm2_5_water,pm2_5_dry_ec,pm10 + + REAL :: mass + + INTEGER :: i,imax,j,jmax,k,kmax,n,itype,iphase + + imax = min(ite,ide-1) + jmax = min(jte,jde-1) + kmax = kte +! +! Sum over bins with center diameter < 2.5e-4 cm for pm2_5_dry, +! pm2_5_dry_ec, and pm2_5_water. All bins go into pm10 +! + pm2_5_dry(its:imax,kts:kmax,jts:jmax) = 0. + pm2_5_dry_ec(its:imax,kts:kmax,jts:jmax) = 0. + pm2_5_water(its:imax,kts:kmax,jts:jmax) = 0. + pm10(its:imax,kts:kmax,jts:jmax) = 0. + do iphase=1,nphase_aer + do itype=1,ntype_aer + do n = 1, nsize_aer(itype) + if (dcen_sect(n,itype) .le. 2.5e-4) then + do j=jts,jmax + do k=kts,kmax + do i=its,imax + mass = chem(i,k,j,lptr_so4_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_no3_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_cl_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_nh4_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_na_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_oin_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(n,itype,iphase)) + + + pm2_5_dry(i,k,j) = pm2_5_dry(i,k,j) + mass + + pm2_5_dry_ec(i,k,j) = pm2_5_dry_ec(i,k,j) & + + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) + + pm2_5_water(i,k,j) = pm2_5_water(i,k,j) & + + chem(i,k,j,waterptr_aer(n,itype)) + + pm10(i,k,j) = pm10(i,k,j) + mass + enddo + enddo + enddo + else + do j=jts,jmax + do k=kts,kmax + do i=its,imax + pm10(i,k,j) = pm10(i,k,j) & + + chem(i,k,j,lptr_so4_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_no3_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_cl_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_nh4_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_na_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_oin_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_bc_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(n,itype,iphase)) + + + + enddo + enddo + enddo + endif + enddo ! size + enddo ! type + enddo ! phase + + !Convert the units from mixing ratio to concentration (ug m^-3) + pm2_5_dry(its:imax,kts:kmax,jts:jmax) = pm2_5_dry(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + pm2_5_dry_ec(its:imax,kts:kmax,jts:jmax) = pm2_5_dry_ec(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + pm2_5_water(its:imax,kts:kmax,jts:jmax) = pm2_5_water(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + pm10(its:imax,kts:kmax,jts:jmax) = pm10(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + end subroutine sum_pm_mosaic_vbs2 + + + + +!----------------------------------------------------------------------- + + subroutine sum_vbs2 ( & + alt, chem, & + hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + + USE module_state_description, only: num_chem + USE module_data_mosaic_asect + IMPLICIT NONE + + INTEGER, INTENT(IN ) :: & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(IN) :: alt + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & + INTENT(IN ) :: chem + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(OUT) :: hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4 + + + + INTEGER :: i,imax,j,jmax,k,kmax,n,itype,iphase + + imax = min(ite,ide-1) + jmax = min(jte,jde-1) + kmax = kte + + hoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + soa_a01(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a01(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + biog_a01(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + soa_a02(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a02(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + biog_a02(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + soa_a03(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a03(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + biog_a03(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + soa_a04(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a04(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + biog_a04(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + +! Species to calculate O:C ratios + hsoa_c(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_o(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_c(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_o(its:imax,kts:kmax,jts:jmax) = 0. + biog_v1(its:imax,kts:kmax,jts:jmax) = 0. + biog_v2(its:imax,kts:kmax,jts:jmax) = 0. + biog_v3(its:imax,kts:kmax,jts:jmax) = 0. + biog_v4(its:imax,kts:kmax,jts:jmax) = 0. + ant_v1(its:imax,kts:kmax,jts:jmax) = 0. + ant_v2(its:imax,kts:kmax,jts:jmax) = 0. + ant_v3(its:imax,kts:kmax,jts:jmax) = 0. + ant_v4(its:imax,kts:kmax,jts:jmax) = 0. + + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do n = 1, nsize_aer(itype) !The 4th bin is 2.5-10um and outside the AMS measurements + do j=jts,jmax + do k=kts,kmax + do i=its,imax + + hsoa_c(i,k,j)=hsoa_c(i,k,j) & + + (chem(i,k,j,lptr_pcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(n,itype,iphase)))*180/211 + + hsoa_o(i,k,j)= hsoa_o(i,k,j) & + + (chem(i,k,j,lptr_pcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(n,itype,iphase))) + + bbsoa_c(i,k,j)= bbsoa_c(i,k,j) & + + (chem(i,k,j,lptr_pcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(n,itype,iphase)))*180/211 + + bbsoa_o(i,k,j)=bbsoa_o(i,k,j) & + +(chem(i,k,j,lptr_pcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(n,itype,iphase))) + + biog_v1(i,k,j)= biog_v1(i,k,j) & + + chem(i,k,j,lptr_biog1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(n,itype,iphase)) + + ant_v1(i,k,j)= ant_v1(i,k,j) & + + chem(i,k,j,lptr_ant1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(n,itype,iphase)) + + enddo + enddo + enddo + enddo + enddo + enddo + + hsoa_c(its:imax,kts:kmax,jts:jmax) = hsoa_c(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_o(its:imax,kts:kmax,jts:jmax) = hsoa_o(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_c(its:imax,kts:kmax,jts:jmax) = bbsoa_c(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_o(its:imax,kts:kmax,jts:jmax) = bbsoa_o(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + biog_v1(its:imax,kts:kmax,jts:jmax) = biog_v1(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + ant_v1(its:imax,kts:kmax,jts:jmax) = ant_v1(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a01(i,k,j)= (chem(i,k,j,lptr_pcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(1,itype,iphase))) + + bboa_a01(i,k,j)= (chem(i,k,j,lptr_pcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(1,itype,iphase))) + + soa_a01(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase))) + + arosoa_a01(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) + + + bbsoa_a01(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase))) + + hsoa_a01(i,k,j)= ( chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase))) + + biog_a01(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase))) + + + + totoa_a01(i,k,j)= ( chem(i,k,j,lptr_pcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(1,itype,iphase))) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a02(i,k,j)= (chem(i,k,j,lptr_pcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(2,itype,iphase))) + + bboa_a02(i,k,j)= (chem(i,k,j,lptr_pcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(2,itype,iphase))) + + soa_a02(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase))) + + arosoa_a02(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) + + + bbsoa_a02(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase))) + + hsoa_a02(i,k,j)= ( chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase))) + + biog_a02(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase))) + + + + totoa_a02(i,k,j)= ( chem(i,k,j,lptr_pcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(2,itype,iphase))) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a03(i,k,j)= (chem(i,k,j,lptr_pcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(3,itype,iphase))) + + bboa_a03(i,k,j)= (chem(i,k,j,lptr_pcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(3,itype,iphase))) + + soa_a03(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase))) + + arosoa_a03(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) + + + bbsoa_a03(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase))) + + hsoa_a03(i,k,j)= ( chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase))) + + biog_a03(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase))) + + + + totoa_a03(i,k,j)= ( chem(i,k,j,lptr_pcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(3,itype,iphase))) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a04(i,k,j)= (chem(i,k,j,lptr_pcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(4,itype,iphase))) + + bboa_a04(i,k,j)= (chem(i,k,j,lptr_pcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(4,itype,iphase))) + + soa_a04(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase))) + + arosoa_a04(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) + + + bbsoa_a04(i,k,j)= (chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase))) + + hsoa_a04(i,k,j)= ( chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase))) + + biog_a04(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase))) + + + + totoa_a04(i,k,j)= ( chem(i,k,j,lptr_pcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(4,itype,iphase))) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + +!Factor of 1.4 used below to convert OC to OA + hoa_a01(its:imax,kts:kmax,jts:jmax) =hoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a01(its:imax,kts:kmax,jts:jmax) =soa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a01(its:imax,kts:kmax,jts:jmax) =bboa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a01(its:imax,kts:kmax,jts:jmax) =bbsoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a01(its:imax,kts:kmax,jts:jmax) =hsoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a01(its:imax,kts:kmax,jts:jmax) =arosoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + + biog_a01(its:imax,kts:kmax,jts:jmax) =biog_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a01(its:imax,kts:kmax,jts:jmax) =totoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a02(its:imax,kts:kmax,jts:jmax) =hoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a02(its:imax,kts:kmax,jts:jmax) =soa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a02(its:imax,kts:kmax,jts:jmax) =bboa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a02(its:imax,kts:kmax,jts:jmax) =bbsoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a02(its:imax,kts:kmax,jts:jmax) =hsoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a02(its:imax,kts:kmax,jts:jmax) =arosoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a02(its:imax,kts:kmax,jts:jmax) =biog_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a02(its:imax,kts:kmax,jts:jmax) =totoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a03(its:imax,kts:kmax,jts:jmax) =hoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a03(its:imax,kts:kmax,jts:jmax) =soa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a03(its:imax,kts:kmax,jts:jmax) =bboa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a03(its:imax,kts:kmax,jts:jmax) =bbsoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a03(its:imax,kts:kmax,jts:jmax) =hsoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a03(its:imax,kts:kmax,jts:jmax) =arosoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a03(its:imax,kts:kmax,jts:jmax) =biog_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a03(its:imax,kts:kmax,jts:jmax) =totoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a04(its:imax,kts:kmax,jts:jmax) =hoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a04(its:imax,kts:kmax,jts:jmax) =soa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a04(its:imax,kts:kmax,jts:jmax) =bboa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a04(its:imax,kts:kmax,jts:jmax) =bbsoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a04(its:imax,kts:kmax,jts:jmax) =hsoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a04(its:imax,kts:kmax,jts:jmax) =arosoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a04(its:imax,kts:kmax,jts:jmax) =biog_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a04(its:imax,kts:kmax,jts:jmax) =totoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + end subroutine sum_vbs2 + + +!---------------------------------------------------------------------- + + + + + + +!---------------------------------------------------------------------- + subroutine sum_vbs9 ( & + alt, chem, & + hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte ) + + USE module_state_description, only: num_chem + USE module_data_mosaic_asect + IMPLICIT NONE + + INTEGER, INTENT(IN ) :: & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(IN) :: alt + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & + INTENT(IN ) :: chem + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & + INTENT(OUT) :: hoa_a01,hoa_a02,hoa_a03,hoa_a04, & + bboa_a01,bboa_a02,bboa_a03,bboa_a04, & + soa_a01,soa_a02,soa_a03,soa_a04, & + bbsoa_a01,bbsoa_a02,bbsoa_a03,bbsoa_a04, & + biog_a01,biog_a02,biog_a03,biog_a04, & + hsoa_a01,hsoa_a02,hsoa_a03,hsoa_a04, & + arosoa_a01,arosoa_a02,arosoa_a03,arosoa_a04, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + hsoa_c,hsoa_o,bbsoa_c,bbsoa_o, & + biog_v1,biog_v2,biog_v3,biog_v4, & + ant_v1,ant_v2,ant_v3,ant_v4 + + + + INTEGER :: i,imax,j,jmax,k,kmax,n,itype,iphase + + imax = min(ite,ide-1) + jmax = min(jte,jde-1) + kmax = kte + + hoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + soa_a01(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a01(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + biog_a01(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a01(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + soa_a02(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a02(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + biog_a02(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a02(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + soa_a03(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a03(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + biog_a03(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a03(its:imax,kts:kmax,jts:jmax) = 0. + + hoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + soa_a04(its:imax,kts:kmax,jts:jmax) = 0. + bboa_a04(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + arosoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + biog_a04(its:imax,kts:kmax,jts:jmax) = 0. + totoa_a04(its:imax,kts:kmax,jts:jmax) = 0. + +! Species to calculate O:C ratios + hsoa_c(its:imax,kts:kmax,jts:jmax) = 0. + hsoa_o(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_c(its:imax,kts:kmax,jts:jmax) = 0. + bbsoa_o(its:imax,kts:kmax,jts:jmax) = 0. + biog_v1(its:imax,kts:kmax,jts:jmax) = 0. + biog_v2(its:imax,kts:kmax,jts:jmax) = 0. + biog_v3(its:imax,kts:kmax,jts:jmax) = 0. + biog_v4(its:imax,kts:kmax,jts:jmax) = 0. + ant_v1(its:imax,kts:kmax,jts:jmax) = 0. + ant_v2(its:imax,kts:kmax,jts:jmax) = 0. + ant_v3(its:imax,kts:kmax,jts:jmax) = 0. + ant_v4(its:imax,kts:kmax,jts:jmax) = 0. + + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do n = 1, nsize_aer(itype) !The 4th bin is 2.5-10um and outside the AMS measurements + do j=jts,jmax + do k=kts,kmax + do i=its,imax + + hsoa_c(i,k,j)=hsoa_c(i,k,j) & + + (chem(i,k,j,lptr_pcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(n,itype,iphase)))*180/211 + + hsoa_o(i,k,j)= hsoa_o(i,k,j) & + + chem(i,k,j,lptr_pcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(n,itype,iphase)) + + bbsoa_c(i,k,j)= bbsoa_c(i,k,j) & + + (chem(i,k,j,lptr_pcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(n,itype,iphase)))*180/211 + + bbsoa_o(i,k,j)=bbsoa_o(i,k,j) & + + chem(i,k,j,lptr_pcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(n,itype,iphase)) + + biog_v1(i,k,j)= biog_v1(i,k,j) & + + chem(i,k,j,lptr_biog1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(n,itype,iphase)) + biog_v2(i,k,j)= biog_v2(i,k,j) & + + chem(i,k,j,lptr_biog2_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(n,itype,iphase)) + biog_v3(i,k,j)= biog_v3(i,k,j) & + + chem(i,k,j,lptr_biog3_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(n,itype,iphase)) + biog_v4(i,k,j)= biog_v4(i,k,j) & + +chem(i,k,j,lptr_biog4_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(n,itype,iphase)) + + ant_v1(i,k,j)= ant_v1(i,k,j) & + + chem(i,k,j,lptr_ant1_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(n,itype,iphase)) + ant_v2(i,k,j)= ant_v2(i,k,j) & + + chem(i,k,j,lptr_ant2_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(n,itype,iphase)) + ant_v3(i,k,j)= ant_v3(i,k,j) & + + chem(i,k,j,lptr_ant3_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(n,itype,iphase)) + ant_v4(i,k,j)= ant_v4(i,k,j) & + + chem(i,k,j,lptr_ant4_c_aer(n,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(n,itype,iphase)) + + enddo + enddo + enddo + enddo + enddo + enddo + + hsoa_c(its:imax,kts:kmax,jts:jmax) = hsoa_c(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_o(its:imax,kts:kmax,jts:jmax) = hsoa_o(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_c(its:imax,kts:kmax,jts:jmax) = bbsoa_c(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_o(its:imax,kts:kmax,jts:jmax) = bbsoa_o(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + biog_v1(its:imax,kts:kmax,jts:jmax) = biog_v1(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + biog_v2(its:imax,kts:kmax,jts:jmax) = biog_v2(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + biog_v3(its:imax,kts:kmax,jts:jmax) = biog_v3(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + biog_v4(its:imax,kts:kmax,jts:jmax) = biog_v4(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + ant_v1(its:imax,kts:kmax,jts:jmax) = ant_v1(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + ant_v2(its:imax,kts:kmax,jts:jmax) = ant_v2(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + ant_v3(its:imax,kts:kmax,jts:jmax) = ant_v3(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + ant_v4(its:imax,kts:kmax,jts:jmax) = ant_v4(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a01(i,k,j)= chem(i,k,j,lptr_pcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(1,itype,iphase)) + + bboa_a01(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(1,itype,iphase)) + + soa_a01(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(1,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(1,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(1,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(1,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(1,itype,iphase)) + + arosoa_a01(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(1,itype,iphase)) + + + + bbsoa_a01(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(1,itype,iphase)) + + hsoa_a01(i,k,j)= chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(1,itype,iphase)) + + biog_a01(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(1,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(1,itype,iphase)) + + + + totoa_a01(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(1,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(1,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(1,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(1,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(1,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(1,itype,iphase)) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a02(i,k,j)= chem(i,k,j,lptr_pcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(2,itype,iphase)) + + bboa_a02(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(2,itype,iphase)) + + soa_a02(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(2,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(2,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(2,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(2,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(2,itype,iphase)) + + arosoa_a02(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(2,itype,iphase)) + + + bbsoa_a02(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(2,itype,iphase)) + + hsoa_a02(i,k,j)= chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(2,itype,iphase)) + + + biog_a02(i,k,j)= chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(2,itype,iphase)) + + + totoa_a02(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(2,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(2,itype,iphase)) + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a03(i,k,j)= chem(i,k,j,lptr_pcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(3,itype,iphase)) + + bboa_a03(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(3,itype,iphase)) + + soa_a03(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(3,itype,iphase)) + + arosoa_a03(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(3,itype,iphase)) + + + bbsoa_a03(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(3,itype,iphase)) + + hsoa_a03(i,k,j)= chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(3,itype,iphase)) + + biog_a03(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(3,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(3,itype,iphase)) + + + totoa_a03(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(3,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(3,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(3,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(3,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(3,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(3,itype,iphase)) + + enddo + enddo + enddo + enddo ! type + enddo ! phase + + do iphase=1,nphase_aer + do itype=1,ntype_aer + do j=jts,jmax + do k=kts,kmax + do i=its,imax + hoa_a04(i,k,j)= chem(i,k,j,lptr_pcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(4,itype,iphase)) + + bboa_a04(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(4,itype,iphase)) + + soa_a04(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(4,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(4,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(4,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(4,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(4,itype,iphase)) + + arosoa_a04(i,k,j)= chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(4,itype,iphase)) + + + bbsoa_a04(i,k,j)= chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(4,itype,iphase)) + + hsoa_a04(i,k,j)= chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(4,itype,iphase)) + + biog_a04(i,k,j)= (chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(4,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(4,itype,iphase)) + + + + totoa_a04(i,k,j)= chem(i,k,j,lptr_pcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_b_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg3_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg4_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg5_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg6_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_pcg7_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg1_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg2_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg3_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg4_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg5_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg6_f_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_opcg7_f_o_aer(4,itype,iphase)) & + + (chem(i,k,j,lptr_ant1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_c_aer(4,itype,iphase))) & + + chem(i,k,j,lptr_ant1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_ant4_o_aer(4,itype,iphase)) & + + (chem(i,k,j,lptr_biog1_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_c_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_c_aer(4,itype,iphase))) & + + chem(i,k,j,lptr_biog1_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog2_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog3_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_biog4_o_aer(4,itype,iphase)) & + + chem(i,k,j,lptr_oc_aer(4,itype,iphase)) + + + enddo + enddo + enddo + enddo ! type + enddo ! phase + +!Factor of 1.4 used below to convert OC to OA + hoa_a01(its:imax,kts:kmax,jts:jmax) =hoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a01(its:imax,kts:kmax,jts:jmax) =soa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a01(its:imax,kts:kmax,jts:jmax) =bboa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a01(its:imax,kts:kmax,jts:jmax) =bbsoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a01(its:imax,kts:kmax,jts:jmax) =hsoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a01(its:imax,kts:kmax,jts:jmax) =arosoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + + biog_a01(its:imax,kts:kmax,jts:jmax) =biog_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a01(its:imax,kts:kmax,jts:jmax) =totoa_a01(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a02(its:imax,kts:kmax,jts:jmax) =hoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a02(its:imax,kts:kmax,jts:jmax) =soa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a02(its:imax,kts:kmax,jts:jmax) =bboa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a02(its:imax,kts:kmax,jts:jmax) =bbsoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a02(its:imax,kts:kmax,jts:jmax) =hsoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a02(its:imax,kts:kmax,jts:jmax) =arosoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a02(its:imax,kts:kmax,jts:jmax) =biog_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a02(its:imax,kts:kmax,jts:jmax) =totoa_a02(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a03(its:imax,kts:kmax,jts:jmax) =hoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a03(its:imax,kts:kmax,jts:jmax) =soa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a03(its:imax,kts:kmax,jts:jmax) =bboa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a03(its:imax,kts:kmax,jts:jmax) =bbsoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a03(its:imax,kts:kmax,jts:jmax) =hsoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a03(its:imax,kts:kmax,jts:jmax) =arosoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a03(its:imax,kts:kmax,jts:jmax) =biog_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a03(its:imax,kts:kmax,jts:jmax) =totoa_a03(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + hoa_a04(its:imax,kts:kmax,jts:jmax) =hoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + soa_a04(its:imax,kts:kmax,jts:jmax) =soa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bboa_a04(its:imax,kts:kmax,jts:jmax) =bboa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + bbsoa_a04(its:imax,kts:kmax,jts:jmax) =bbsoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + hsoa_a04(its:imax,kts:kmax,jts:jmax) =hsoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + arosoa_a04(its:imax,kts:kmax,jts:jmax) =arosoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + biog_a04(its:imax,kts:kmax,jts:jmax) =biog_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + totoa_a04(its:imax,kts:kmax,jts:jmax) =totoa_a04(its:imax,kts:kmax,jts:jmax) & + / alt(its:imax,kts:kmax,jts:jmax) + + + end subroutine sum_vbs9 + + +!---------------------------------------------------------------------- + + + + subroutine mapaer_tofrom_host( imap, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte, & @@ -551,9 +2382,25 @@ subroutine mapaer_tofrom_host( imap, & t_phy, p_phy, rho_phy ) use module_configure, only: & - p_qv, p_qc, p_sulf, p_hno3, p_hcl, p_nh3, p_o3, & - p_so2, p_h2o2, p_hcho, p_ora1, p_ho, p_ho2, p_no3, & - p_no, p_no2, p_hono, p_pan, p_ch3o2, p_ch3oh, p_op1 + p_qv, p_qc, p_h2so4,p_sulf, p_hno3, p_hcl, p_nh3, p_o3, & + p_so2, p_h2o2, p_hcho, p_ho, p_ho2, p_no3, & + p_no, p_no2, p_hono, p_pan, & + p_pcg1_b_c,p_pcg2_b_c,p_pcg3_b_c,p_pcg4_b_c,p_pcg5_b_c,p_pcg6_b_c, & + p_pcg7_b_c,p_pcg8_b_c,p_pcg9_b_c,p_opcg1_b_c,p_opcg2_b_c,p_opcg3_b_c, & + p_opcg4_b_c,p_opcg5_b_c,p_opcg6_b_c,p_opcg7_b_c,p_opcg8_b_c,p_pcg1_b_o,& + p_pcg2_b_o,p_pcg3_b_o,p_pcg4_b_o,p_pcg5_b_o,p_pcg6_b_o,p_pcg7_b_o,& + p_pcg8_b_o,p_pcg9_b_o,p_opcg1_b_o,p_opcg2_b_o,p_opcg3_b_o,p_opcg4_b_o, & + p_opcg5_b_o,p_opcg6_b_o,p_opcg7_b_o,p_opcg8_b_o,p_pcg1_f_c,p_pcg2_f_c, & + p_pcg3_f_c,p_pcg4_f_c,p_pcg5_f_c,p_pcg6_f_c,p_pcg7_f_c,p_pcg8_f_c, & + p_pcg9_f_c, p_opcg1_f_c,p_opcg2_f_c,p_opcg3_f_c,p_opcg4_f_c, & + p_opcg5_f_c,p_opcg6_f_c,p_opcg7_f_c,p_opcg8_f_c,p_pcg1_f_o, & + p_pcg2_f_o,p_pcg3_f_o,p_pcg4_f_o,p_pcg5_f_o,p_pcg6_f_o,p_pcg7_f_o, & + p_pcg8_f_o,p_pcg9_f_o,p_opcg1_f_o,p_opcg2_f_o,p_opcg3_f_o,p_opcg4_f_o,& + p_opcg5_f_o,p_opcg6_f_o,p_opcg7_f_o,p_opcg8_f_o, & + p_ant1_c,p_ant2_c,p_ant3_c,p_ant4_c,p_ant1_o,p_ant2_o,p_ant3_o,p_ant4_o,& + p_biog1_c,p_biog2_c,p_biog3_c,p_biog4_c,p_biog1_o, & + p_biog2_o,p_biog3_o,p_biog4_o + use module_state_description, only: param_first_scalar use module_data_mosaic_asect use module_data_mosaic_other @@ -594,6 +2441,22 @@ subroutine mapaer_tofrom_host( imap, & factaerso4, factaerno3, factaercl, factaermsa, & factaerco3, factaernh4, factaerna, factaerca, & factaeroin, factaeroc, factaerbc, & + factaerpcg1_b_c,factaerpcg2_b_c,factaerpcg3_b_c,factaerpcg4_b_c,factaerpcg5_b_c,factaerpcg6_b_c, & + factaerpcg7_b_c,factaerpcg8_b_c,factaerpcg9_b_c,factaeropcg1_b_c,factaeropcg2_b_c,factaeropcg3_b_c, & + factaeropcg4_b_c,factaeropcg5_b_c,factaeropcg6_b_c,factaeropcg7_b_c,factaeropcg8_b_c,factaerpcg1_b_o,& + factaerpcg2_b_o,factaerpcg3_b_o,factaerpcg4_b_o,factaerpcg5_b_o,factaerpcg6_b_o,factaerpcg7_b_o,& + factaerpcg8_b_o,factaerpcg9_b_o,factaeropcg1_b_o,factaeropcg2_b_o,factaeropcg3_b_o,factaeropcg4_b_o, & + factaeropcg5_b_o,factaeropcg6_b_o,factaeropcg7_b_o,factaeropcg8_b_o,factaerpcg1_f_c,factaerpcg2_f_c, & + factaerpcg3_f_c,factaerpcg4_f_c,factaerpcg5_f_c,factaerpcg6_f_c,factaerpcg7_f_c,factaerpcg8_f_c, & + factaerpcg9_f_c, factaeropcg1_f_c,factaeropcg2_f_c,factaeropcg3_f_c,factaeropcg4_f_c, & + factaeropcg5_f_c,factaeropcg6_f_c,factaeropcg7_f_c,factaeropcg8_f_c,factaerpcg1_f_o, & + factaerpcg2_f_o,factaerpcg3_f_o,factaerpcg4_f_o,factaerpcg5_f_o,factaerpcg6_f_o,factaerpcg7_f_o, & + factaerpcg8_f_o,factaerpcg9_f_o,factaeropcg1_f_o,factaeropcg2_f_o,factaeropcg3_f_o,factaeropcg4_f_o,& + factaeropcg5_f_o,factaeropcg6_f_o,factaeropcg7_f_o,factaeropcg8_f_o,& + factaerant1_c,factaerant2_c,factaerant3_c,factaerant4_c, & + factaerant1_o,factaerant2_o,factaerant3_o,factaerant4_o, & + factaerbiog1_c,factaerbiog2_c,factaerbiog3_c,factaerbiog4_c, & + factaerbiog1_o,factaerbiog2_o,factaerbiog3_o,factaerbiog4_o, & factaerhysw, factaerwater, factaernum real, parameter :: eps=0.622 @@ -625,11 +2488,98 @@ subroutine mapaer_tofrom_host( imap, & factaernh4 = dum*mw_nh4_aer factaerna = dum*mw_na_aer factaerca = dum*mw_ca_aer - factaeroin = dum - factaeroc = dum - factaerbc = dum + factaeroin = dum*mw_oin_aer + factaeroc = dum*mw_oc_aer + factaerbc = dum*mw_bc_aer factaerhysw = dum*mw_water_aer factaerwater = dum*mw_water_aer + factaerpcg1_b_c=dum*mw_pcg1_b_c_aer + factaerpcg2_b_c=dum*mw_pcg2_b_c_aer + factaerpcg3_b_c=dum*mw_pcg3_b_c_aer + factaerpcg4_b_c=dum*mw_pcg4_b_c_aer + factaerpcg5_b_c=dum*mw_pcg5_b_c_aer + factaerpcg6_b_c=dum*mw_pcg6_b_c_aer + factaerpcg7_b_c=dum*mw_pcg7_b_c_aer + factaerpcg8_b_c=dum*mw_pcg8_b_c_aer + factaerpcg9_b_c=dum*mw_pcg9_b_c_aer + factaerpcg1_b_o=dum*mw_pcg1_b_o_aer + factaerpcg2_b_o=dum*mw_pcg2_b_o_aer + factaerpcg3_b_o=dum*mw_pcg3_b_o_aer + factaerpcg4_b_o=dum*mw_pcg4_b_o_aer + factaerpcg5_b_o=dum*mw_pcg5_b_o_aer + factaerpcg6_b_o=dum*mw_pcg6_b_o_aer + factaerpcg7_b_o=dum*mw_pcg7_b_o_aer + factaerpcg8_b_o=dum*mw_pcg8_b_o_aer + factaerpcg9_b_o=dum*mw_pcg9_b_o_aer + factaeropcg1_b_c=dum*mw_opcg1_b_c_aer + factaeropcg2_b_c=dum*mw_opcg2_b_c_aer + factaeropcg3_b_c=dum*mw_opcg3_b_c_aer + factaeropcg4_b_c=dum*mw_opcg4_b_c_aer + factaeropcg5_b_c=dum*mw_opcg5_b_c_aer + factaeropcg6_b_c=dum*mw_opcg6_b_c_aer + factaeropcg7_b_c=dum*mw_opcg7_b_c_aer + factaeropcg8_b_c=dum*mw_opcg8_b_c_aer + factaeropcg1_b_o=dum*mw_opcg1_b_o_aer + factaeropcg2_b_o=dum*mw_opcg2_b_o_aer + factaeropcg3_b_o=dum*mw_opcg3_b_o_aer + factaeropcg4_b_o=dum*mw_opcg4_b_o_aer + factaeropcg5_b_o=dum*mw_opcg5_b_o_aer + factaeropcg6_b_o=dum*mw_opcg6_b_o_aer + factaeropcg7_b_o=dum*mw_opcg7_b_o_aer + factaeropcg8_b_o=dum*mw_opcg8_b_o_aer + factaerpcg1_f_c=dum*mw_pcg1_f_c_aer + factaerpcg2_f_c=dum*mw_pcg2_f_c_aer + factaerpcg3_f_c=dum*mw_pcg3_f_c_aer + factaerpcg4_f_c=dum*mw_pcg4_f_c_aer + factaerpcg5_f_c=dum*mw_pcg5_f_c_aer + factaerpcg6_f_c=dum*mw_pcg6_f_c_aer + factaerpcg7_f_c=dum*mw_pcg7_f_c_aer + factaerpcg8_f_c=dum*mw_pcg8_f_c_aer + factaerpcg9_f_c=dum*mw_pcg9_f_c_aer + factaerpcg1_f_o=dum*mw_pcg1_f_o_aer + factaerpcg2_f_o=dum*mw_pcg2_f_o_aer + factaerpcg3_f_o=dum*mw_pcg3_f_o_aer + factaerpcg4_f_o=dum*mw_pcg4_f_o_aer + factaerpcg5_f_o=dum*mw_pcg5_f_o_aer + factaerpcg6_f_o=dum*mw_pcg6_f_o_aer + factaerpcg7_f_o=dum*mw_pcg7_f_o_aer + factaerpcg8_f_o=dum*mw_pcg8_f_o_aer + factaerpcg9_f_o=dum*mw_pcg9_f_o_aer + factaeropcg1_f_c=dum*mw_opcg1_f_c_aer + factaeropcg2_f_c=dum*mw_opcg2_f_c_aer + factaeropcg3_f_c=dum*mw_opcg3_f_c_aer + factaeropcg4_f_c=dum*mw_opcg4_f_c_aer + factaeropcg5_f_c=dum*mw_opcg5_f_c_aer + factaeropcg6_f_c=dum*mw_opcg6_f_c_aer + factaeropcg7_f_c=dum*mw_opcg7_f_c_aer + factaeropcg8_f_c=dum*mw_opcg8_f_c_aer + factaeropcg1_f_o=dum*mw_opcg1_f_o_aer + factaeropcg2_f_o=dum*mw_opcg2_f_o_aer + factaeropcg3_f_o=dum*mw_opcg3_f_o_aer + factaeropcg4_f_o=dum*mw_opcg4_f_o_aer + factaeropcg5_f_o=dum*mw_opcg5_f_o_aer + factaeropcg6_f_o=dum*mw_opcg6_f_o_aer + factaeropcg7_f_o=dum*mw_opcg7_f_o_aer + factaeropcg8_f_o=dum*mw_opcg8_f_o_aer + factaerant1_c=dum*mw_ant1_c_aer + factaerant2_c=dum*mw_ant2_c_aer + factaerant3_c=dum*mw_ant3_c_aer + factaerant4_c=dum*mw_ant4_c_aer + factaerant1_o=dum*mw_ant1_o_aer + factaerant2_o=dum*mw_ant2_o_aer + factaerant3_o=dum*mw_ant3_o_aer + factaerant4_o=dum*mw_ant4_o_aer + factaerbiog1_c=dum*mw_biog1_c_aer + factaerbiog2_c=dum*mw_biog2_c_aer + factaerbiog3_c=dum*mw_biog3_c_aer + factaerbiog4_c=dum*mw_biog4_c_aer + factaerbiog1_o=dum*mw_biog1_o_aer + factaerbiog2_o=dum*mw_biog2_o_aer + factaerbiog3_o=dum*mw_biog3_o_aer + factaerbiog4_o=dum*mw_biog4_o_aer + + + ! If aboxtest_units_convert=10, turn off units conversions both here ! and in module_mosaic. This is for testing, to allow exact agreements. @@ -652,6 +2602,94 @@ subroutine mapaer_tofrom_host( imap, & factaerbc = 1.0 factaerhysw = 1.0 factaerwater = 1.0 + factaerpcg1_b_c=1.0 + factaerpcg2_b_c=1.0 + factaerpcg3_b_c=1.0 + factaerpcg4_b_c=1.0 + factaerpcg5_b_c=1.0 + factaerpcg6_b_c=1.0 + factaerpcg7_b_c=1.0 + factaerpcg8_b_c=1.0 + factaerpcg9_b_c=1.0 + factaerpcg1_b_o=1.0 + factaerpcg2_b_o=1.0 + factaerpcg3_b_o=1.0 + factaerpcg4_b_o=1.0 + factaerpcg5_b_o=1.0 + factaerpcg6_b_o=1.0 + factaerpcg7_b_o=1.0 + factaerpcg8_b_o=1.0 + factaerpcg9_b_o=1.0 + factaeropcg1_b_c=1.0 + factaeropcg2_b_c=1.0 + factaeropcg3_b_c=1.0 + factaeropcg4_b_c=1.0 + factaeropcg5_b_c=1.0 + factaeropcg6_b_c=1.0 + factaeropcg7_b_c=1.0 + factaeropcg8_b_c=1.0 + factaeropcg1_b_o=1.0 + factaeropcg2_b_o=1.0 + factaeropcg3_b_o=1.0 + factaeropcg4_b_o=1.0 + factaeropcg5_b_o=1.0 + factaeropcg6_b_o=1.0 + factaeropcg7_b_o=1.0 + factaeropcg8_b_o=1.0 + factaerpcg1_f_c=1.0 + factaerpcg2_f_c=1.0 + factaerpcg3_f_c=1.0 + factaerpcg4_f_c=1.0 + factaerpcg5_f_c=1.0 + factaerpcg6_f_c=1.0 + factaerpcg7_f_c=1.0 + factaerpcg8_f_c=1.0 + factaerpcg9_f_c=1.0 + factaerpcg1_f_o=1.0 + factaerpcg2_f_o=1.0 + factaerpcg3_f_o=1.0 + factaerpcg4_f_o=1.0 + factaerpcg5_f_o=1.0 + factaerpcg6_f_o=1.0 + factaerpcg7_f_o=1.0 + factaerpcg8_f_o=1.0 + factaerpcg9_f_o=1.0 + factaeropcg1_f_c=1.0 + factaeropcg2_f_c=1.0 + factaeropcg3_f_c=1.0 + factaeropcg4_f_c=1.0 + factaeropcg5_f_c=1.0 + factaeropcg6_f_c=1.0 + factaeropcg7_f_c=1.0 + factaeropcg8_f_c=1.0 + factaeropcg1_f_o=1.0 + factaeropcg2_f_o=1.0 + factaeropcg3_f_o=1.0 + factaeropcg4_f_o=1.0 + factaeropcg5_f_o=1.0 + factaeropcg6_f_o=1.0 + factaeropcg7_f_o=1.0 + factaeropcg8_f_o=1.0 + factaerant1_c=1.0 + factaerant2_c=1.0 + factaerant3_c=1.0 + factaerant4_c=1.0 + factaerant1_o=1.0 + factaerant2_o=1.0 + factaerant3_o=1.0 + factaerant4_o=1.0 + factaerbiog1_c=1.0 + factaerbiog2_c=1.0 + factaerbiog3_c=1.0 + factaerbiog4_c=1.0 + factaerbiog1_o=1.0 + factaerbiog2_o=1.0 + factaerbiog3_o=1.0 + factaerbiog4_o=1.0 + + + + end if @@ -714,8 +2752,12 @@ subroutine mapaer_tofrom_host( imap, & p1st = param_first_scalar if (aboxtest_map_method .ne. 2) then - if (p_sulf .ge. p1st) & - rsub(kh2so4,k1:k2,1) = chem(it,kt1:kt2,jt,p_sulf)/factgas + if (p_h2so4 .ge. p1st) then + rsub(kh2so4,k1:k2,1) = chem(it,kt1:kt2,jt,p_h2so4)/factgas + elseif (p_sulf .ge. p1st) then + rsub(kh2so4,k1:k2,1) = chem(it,kt1:kt2,jt,p_sulf)/factgas + endif + if (p_hno3 .ge. p1st) & rsub(khno3,k1:k2,1) = chem(it,kt1:kt2,jt,p_hno3)/factgas if (p_hcl .ge. p1st) & @@ -734,8 +2776,6 @@ subroutine mapaer_tofrom_host( imap, & rsub(kh2o2,k1:k2,1) = chem(it,kt1:kt2,jt,p_h2o2)/factgas if (p_hcho .ge. p1st) & rsub(khcho,k1:k2,1) = chem(it,kt1:kt2,jt,p_hcho)/factgas - if (p_ora1 .ge. p1st) & - rsub(khcooh,k1:k2,1) = chem(it,kt1:kt2,jt,p_ora1)/factgas if (p_ho .ge. p1st) & rsub(koh,k1:k2,1) = chem(it,kt1:kt2,jt,p_ho)/factgas if (p_ho2 .ge. p1st) & @@ -750,12 +2790,175 @@ subroutine mapaer_tofrom_host( imap, & rsub(khono,k1:k2,1) = chem(it,kt1:kt2,jt,p_hono)/factgas if (p_pan .ge. p1st) & rsub(kpan,k1:k2,1) = chem(it,kt1:kt2,jt,p_pan)/factgas - if (p_ch3o2 .ge. p1st) & - rsub(kch3o2,k1:k2,1) = chem(it,kt1:kt2,jt,p_ch3o2)/factgas - if (p_ch3oh .ge. p1st) & - rsub(kch3oh,k1:k2,1) = chem(it,kt1:kt2,jt,p_ch3oh)/factgas - if (p_op1 .ge. p1st) & - rsub(kch3ooh,k1:k2,1) = chem(it,kt1:kt2,jt,p_op1)/factgas + if (p_pcg1_b_c .ge. p1st) & + rsub(kpcg1_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg1_b_c)/factgas + if (p_pcg2_b_c .ge. p1st) & + rsub(kpcg2_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg2_b_c)/factgas + if (p_pcg3_b_c .ge. p1st) & + rsub(kpcg3_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg3_b_c)/factgas + if (p_pcg4_b_c .ge. p1st) & + rsub(kpcg4_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg4_b_c)/factgas + if (p_pcg5_b_c .ge. p1st) & + rsub(kpcg5_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg5_b_c)/factgas + if (p_pcg6_b_c .ge. p1st) & + rsub(kpcg6_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg6_b_c)/factgas + if (p_pcg7_b_c .ge. p1st) & + rsub(kpcg7_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg7_b_c)/factgas + if (p_pcg8_b_c .ge. p1st) & + rsub(kpcg8_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg8_b_c)/factgas + if (p_pcg9_b_c .ge. p1st) & + rsub(kpcg9_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg9_b_c)/factgas + if (p_pcg1_b_o .ge. p1st) & + rsub(kpcg1_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg1_b_o)/factgas + if (p_pcg2_b_o .ge. p1st) & + rsub(kpcg2_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg2_b_o)/factgas + if (p_pcg3_b_o .ge. p1st) & + rsub(kpcg3_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg3_b_o)/factgas + if (p_pcg4_b_o .ge. p1st) & + rsub(kpcg4_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg4_b_o)/factgas + if (p_pcg5_b_o .ge. p1st) & + rsub(kpcg5_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg5_b_o)/factgas + if (p_pcg6_b_o .ge. p1st) & + rsub(kpcg6_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg6_b_o)/factgas + if (p_pcg7_b_o .ge. p1st) & + rsub(kpcg7_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg7_b_o)/factgas + if (p_pcg8_b_o .ge. p1st) & + rsub(kpcg8_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg8_b_o)/factgas + if (p_pcg9_b_o .ge. p1st) & + rsub(kpcg9_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg9_b_o)/factgas + if (p_opcg1_b_c .ge. p1st) & + rsub(kopcg1_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg1_b_c)/factgas + if (p_opcg2_b_c .ge. p1st) & + rsub(kopcg2_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg2_b_c)/factgas + if (p_opcg3_b_c .ge. p1st) & + rsub(kopcg3_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg3_b_c)/factgas + if (p_opcg4_b_c .ge. p1st) & + rsub(kopcg4_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg4_b_c)/factgas + if (p_opcg5_b_c .ge. p1st) & + rsub(kopcg5_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg5_b_c)/factgas + if (p_opcg6_b_c .ge. p1st) & + rsub(kopcg6_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg6_b_c)/factgas + if (p_opcg7_b_c .ge. p1st) & + rsub(kopcg7_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg7_b_c)/factgas + if (p_opcg8_b_c .ge. p1st) & + rsub(kopcg8_b_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg8_b_c)/factgas + if (p_opcg1_b_o .ge. p1st) & + rsub(kopcg1_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg1_b_o)/factgas + if (p_opcg2_b_o .ge. p1st) & + rsub(kopcg2_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg2_b_o)/factgas + if (p_opcg3_b_o .ge. p1st) & + rsub(kopcg3_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg3_b_o)/factgas + if (p_opcg4_b_o .ge. p1st) & + rsub(kopcg4_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg4_b_o)/factgas + if (p_opcg5_b_o .ge. p1st) & + rsub(kopcg5_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg5_b_o)/factgas + if (p_opcg6_b_o .ge. p1st) & + rsub(kopcg6_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg6_b_o)/factgas + if (p_opcg7_b_o .ge. p1st) & + rsub(kopcg7_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg7_b_o)/factgas + if (p_opcg8_b_o .ge. p1st) & + rsub(kopcg8_b_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg8_b_o)/factgas + if (p_pcg1_f_c .ge. p1st) & + rsub(kpcg1_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg1_f_c)/factgas + if (p_pcg2_f_c .ge. p1st) & + rsub(kpcg2_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg2_f_c)/factgas + if (p_pcg3_f_c .ge. p1st) & + rsub(kpcg3_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg3_f_c)/factgas + if (p_pcg4_f_c .ge. p1st) & + rsub(kpcg4_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg4_f_c)/factgas + if (p_pcg5_f_c .ge. p1st) & + rsub(kpcg5_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg5_f_c)/factgas + if (p_pcg6_f_c .ge. p1st) & + rsub(kpcg6_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg6_f_c)/factgas + if (p_pcg7_f_c .ge. p1st) & + rsub(kpcg7_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg7_f_c)/factgas + if (p_pcg8_f_c .ge. p1st) & + rsub(kpcg8_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg8_f_c)/factgas + if (p_pcg9_f_c .ge. p1st) & + rsub(kpcg9_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg9_f_c)/factgas + if (p_pcg1_f_o .ge. p1st) & + rsub(kpcg1_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg1_f_o)/factgas + if (p_pcg2_f_o .ge. p1st) & + rsub(kpcg2_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg2_f_o)/factgas + if (p_pcg3_f_o .ge. p1st) & + rsub(kpcg3_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg3_f_o)/factgas + if (p_pcg4_f_o .ge. p1st) & + rsub(kpcg4_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg4_f_o)/factgas + if (p_pcg5_f_o .ge. p1st) & + rsub(kpcg5_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg5_f_o)/factgas + if (p_pcg6_f_o .ge. p1st) & + rsub(kpcg6_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg6_f_o)/factgas + if (p_pcg7_f_o .ge. p1st) & + rsub(kpcg7_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg7_f_o)/factgas + if (p_pcg8_f_o .ge. p1st) & + rsub(kpcg8_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg8_f_o)/factgas + if (p_pcg9_f_o .ge. p1st) & + rsub(kpcg9_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_pcg9_f_o)/factgas + if (p_opcg1_f_c .ge. p1st) & + rsub(kopcg1_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg1_f_c)/factgas + if (p_opcg2_f_c .ge. p1st) & + rsub(kopcg2_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg2_f_c)/factgas + if (p_opcg3_f_c .ge. p1st) & + rsub(kopcg3_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg3_f_c)/factgas + if (p_opcg4_f_c .ge. p1st) & + rsub(kopcg4_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg4_f_c)/factgas + if (p_opcg5_f_c .ge. p1st) & + rsub(kopcg5_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg5_f_c)/factgas + if (p_opcg6_f_c .ge. p1st) & + rsub(kopcg6_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg6_f_c)/factgas + if (p_opcg7_f_c .ge. p1st) & + rsub(kopcg7_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg7_f_c)/factgas + if (p_opcg8_f_c .ge. p1st) & + rsub(kopcg8_f_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg8_f_c)/factgas + if (p_opcg1_f_o .ge. p1st) & + rsub(kopcg1_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg1_f_o)/factgas + if (p_opcg2_f_o .ge. p1st) & + rsub(kopcg2_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg2_f_o)/factgas + if (p_opcg3_f_o .ge. p1st) & + rsub(kopcg3_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg3_f_o)/factgas + if (p_opcg4_f_o .ge. p1st) & + rsub(kopcg4_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg4_f_o)/factgas + if (p_opcg5_f_o .ge. p1st) & + rsub(kopcg5_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg5_f_o)/factgas + if (p_opcg6_f_o .ge. p1st) & + rsub(kopcg6_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg6_f_o)/factgas + if (p_opcg7_f_o .ge. p1st) & + rsub(kopcg7_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg7_f_o)/factgas + if (p_opcg8_f_o .ge. p1st) & + rsub(kopcg8_f_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_opcg8_f_o)/factgas + if (p_ant1_c .ge. p1st) & + rsub(kant1_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant1_c)/factgas + if (p_ant2_c .ge. p1st) & + rsub(kant2_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant2_c)/factgas + if (p_ant3_c .ge. p1st) & + rsub(kant3_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant3_c)/factgas + if (p_ant4_c .ge. p1st) & + rsub(kant4_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant4_c)/factgas + if (p_ant1_o .ge. p1st) & + rsub(kant1_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant1_o)/factgas + if (p_ant2_o .ge. p1st) & + rsub(kant2_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant2_o)/factgas + if (p_ant3_o .ge. p1st) & + rsub(kant3_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant3_o)/factgas + if (p_ant4_o .ge. p1st) & + rsub(kant4_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_ant4_o)/factgas + if (p_biog1_c .ge. p1st) & + rsub(kbiog1_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog1_c)/factgas + if (p_biog2_c .ge. p1st) & + rsub(kbiog2_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog2_c)/factgas + if (p_biog3_c .ge. p1st) & + rsub(kbiog3_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog3_c)/factgas + if (p_biog4_c .ge. p1st) & + rsub(kbiog4_c,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog4_c)/factgas + if (p_biog1_o .ge. p1st) & + rsub(kbiog1_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog1_o)/factgas + if (p_biog2_o .ge. p1st) & + rsub(kbiog2_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog2_o)/factgas + if (p_biog3_o .ge. p1st) & + rsub(kbiog3_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog3_o)/factgas + if (p_biog4_o .ge. p1st) & + rsub(kbiog4_o,k1:k2,1) = chem(it,kt1:kt2,jt,p_biog4_o)/factgas + do iphase=1,nphase_aer do itype=1,ntype_aer @@ -801,6 +3004,259 @@ subroutine mapaer_tofrom_host( imap, & if (waterptr_aer(n,itype) .ge. p1st) & rsub(waterptr_aer(n,itype),k1:k2,1) = & chem(it,kt1:kt2,jt,waterptr_aer(n,itype))/factaerwater + if (lptr_pcg1_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg1_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg1_b_c_aer(n,itype,iphase))/factaerpcg1_b_c + if (lptr_pcg2_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg2_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg2_b_c_aer(n,itype,iphase))/factaerpcg2_b_c + if (lptr_pcg3_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg3_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg3_b_c_aer(n,itype,iphase))/factaerpcg3_b_c + if (lptr_pcg4_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg4_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg4_b_c_aer(n,itype,iphase))/factaerpcg4_b_c + if (lptr_pcg5_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg5_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg5_b_c_aer(n,itype,iphase))/factaerpcg5_b_c + if (lptr_pcg6_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg6_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg6_b_c_aer(n,itype,iphase))/factaerpcg6_b_c + if (lptr_pcg7_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg7_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg7_b_c_aer(n,itype,iphase))/factaerpcg7_b_c + if (lptr_pcg8_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg8_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg8_b_c_aer(n,itype,iphase))/factaerpcg8_b_c + if (lptr_pcg9_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg9_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg9_b_c_aer(n,itype,iphase))/factaerpcg9_b_c + if (lptr_pcg1_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg1_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg1_b_o_aer(n,itype,iphase))/factaerpcg1_b_o + if (lptr_pcg2_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg2_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg2_b_o_aer(n,itype,iphase))/factaerpcg2_b_o + if (lptr_pcg3_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg3_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg3_b_o_aer(n,itype,iphase))/factaerpcg3_b_o + if (lptr_pcg4_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg4_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg4_b_o_aer(n,itype,iphase))/factaerpcg4_b_o + if (lptr_pcg5_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg5_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg5_b_o_aer(n,itype,iphase))/factaerpcg5_b_o + if (lptr_pcg6_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg6_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg6_b_o_aer(n,itype,iphase))/factaerpcg6_b_o + if (lptr_pcg7_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg7_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg7_b_o_aer(n,itype,iphase))/factaerpcg7_b_o + if (lptr_pcg8_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg8_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg8_b_o_aer(n,itype,iphase))/factaerpcg8_b_o + if (lptr_pcg9_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg9_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg9_b_o_aer(n,itype,iphase))/factaerpcg9_b_o + if (lptr_opcg1_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg1_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg1_b_c_aer(n,itype,iphase))/factaeropcg1_b_c + if (lptr_opcg2_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg2_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg2_b_c_aer(n,itype,iphase))/factaeropcg2_b_c + if (lptr_opcg3_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg3_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg3_b_c_aer(n,itype,iphase))/factaeropcg3_b_c + if (lptr_opcg4_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg4_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg4_b_c_aer(n,itype,iphase))/factaeropcg4_b_c + if (lptr_opcg5_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg5_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg5_b_c_aer(n,itype,iphase))/factaeropcg5_b_c + if (lptr_opcg6_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg6_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg6_b_c_aer(n,itype,iphase))/factaeropcg6_b_c + if (lptr_opcg7_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg7_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg7_b_c_aer(n,itype,iphase))/factaeropcg7_b_c + if (lptr_opcg8_b_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg8_b_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg8_b_c_aer(n,itype,iphase))/factaeropcg8_b_c + if (lptr_opcg1_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg1_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg1_b_o_aer(n,itype,iphase))/factaeropcg1_b_o + if (lptr_opcg2_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg2_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg2_b_o_aer(n,itype,iphase))/factaeropcg2_b_o + if (lptr_opcg3_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg3_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg3_b_o_aer(n,itype,iphase))/factaeropcg3_b_o + if (lptr_opcg4_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg4_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg4_b_o_aer(n,itype,iphase))/factaeropcg4_b_o + if (lptr_opcg5_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg5_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg5_b_o_aer(n,itype,iphase))/factaeropcg5_b_o + if (lptr_opcg6_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg6_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg6_b_o_aer(n,itype,iphase))/factaeropcg6_b_o + if (lptr_opcg7_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg7_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg7_b_o_aer(n,itype,iphase))/factaeropcg7_b_o + if (lptr_opcg8_b_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg8_b_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg8_b_o_aer(n,itype,iphase))/factaeropcg8_b_o + if (lptr_pcg1_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg1_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg1_f_c_aer(n,itype,iphase))/factaerpcg1_f_c + if (lptr_pcg2_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg2_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg2_f_c_aer(n,itype,iphase))/factaerpcg2_f_c + if (lptr_pcg3_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg3_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg3_f_c_aer(n,itype,iphase))/factaerpcg3_f_c + if (lptr_pcg4_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg4_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg4_f_c_aer(n,itype,iphase))/factaerpcg4_f_c + if (lptr_pcg5_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg5_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg5_f_c_aer(n,itype,iphase))/factaerpcg5_f_c + if (lptr_pcg6_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg6_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg6_f_c_aer(n,itype,iphase))/factaerpcg6_f_c + if (lptr_pcg7_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg7_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg7_f_c_aer(n,itype,iphase))/factaerpcg7_f_c + if (lptr_pcg8_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg8_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg8_f_c_aer(n,itype,iphase))/factaerpcg8_f_c + if (lptr_pcg9_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg9_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg9_f_c_aer(n,itype,iphase))/factaerpcg9_f_c + if (lptr_pcg1_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg1_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg1_f_o_aer(n,itype,iphase))/factaerpcg1_f_o + if (lptr_pcg2_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg2_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg2_f_o_aer(n,itype,iphase))/factaerpcg2_f_o + if (lptr_pcg3_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg3_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg3_f_o_aer(n,itype,iphase))/factaerpcg3_f_o + if (lptr_pcg4_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg4_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg4_f_o_aer(n,itype,iphase))/factaerpcg4_f_o + if (lptr_pcg5_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg5_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg5_f_o_aer(n,itype,iphase))/factaerpcg5_f_o + if (lptr_pcg6_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg6_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg6_f_o_aer(n,itype,iphase))/factaerpcg6_f_o + if (lptr_pcg7_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg7_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg7_f_o_aer(n,itype,iphase))/factaerpcg7_f_o + if (lptr_pcg8_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg8_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg8_f_o_aer(n,itype,iphase))/factaerpcg8_f_o + if (lptr_pcg9_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_pcg9_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_pcg9_f_o_aer(n,itype,iphase))/factaerpcg9_f_o + if (lptr_opcg1_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg1_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg1_f_c_aer(n,itype,iphase))/factaeropcg1_f_c + if (lptr_opcg2_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg2_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg2_f_c_aer(n,itype,iphase))/factaeropcg2_f_c + if (lptr_opcg3_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg3_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg3_f_c_aer(n,itype,iphase))/factaeropcg3_f_c + if (lptr_opcg4_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg4_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg4_f_c_aer(n,itype,iphase))/factaeropcg4_f_c + if (lptr_opcg5_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg5_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg5_f_c_aer(n,itype,iphase))/factaeropcg5_f_c + if (lptr_opcg6_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg6_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg6_f_c_aer(n,itype,iphase))/factaeropcg6_f_c + if (lptr_opcg7_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg7_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg7_f_c_aer(n,itype,iphase))/factaeropcg7_f_c + if (lptr_opcg8_f_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg8_f_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg8_f_c_aer(n,itype,iphase))/factaeropcg8_f_c + if (lptr_opcg1_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg1_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg1_f_o_aer(n,itype,iphase))/factaeropcg1_f_o + if (lptr_opcg2_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg2_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg2_f_o_aer(n,itype,iphase))/factaeropcg2_f_o + if (lptr_opcg3_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg3_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg3_f_o_aer(n,itype,iphase))/factaeropcg3_f_o + if (lptr_opcg4_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg4_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg4_f_o_aer(n,itype,iphase))/factaeropcg4_f_o + if (lptr_opcg5_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg5_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg5_f_o_aer(n,itype,iphase))/factaeropcg5_f_o + if (lptr_opcg6_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg6_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg6_f_o_aer(n,itype,iphase))/factaeropcg6_f_o + if (lptr_opcg7_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg7_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg7_f_o_aer(n,itype,iphase))/factaeropcg7_f_o + if (lptr_opcg8_f_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_opcg8_f_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_opcg8_f_o_aer(n,itype,iphase))/factaeropcg8_f_o + if (lptr_ant1_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant1_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant1_c_aer(n,itype,iphase))/factaerant1_c + if (lptr_ant2_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant2_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant2_c_aer(n,itype,iphase))/factaerant2_c + if (lptr_ant3_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant3_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant3_c_aer(n,itype,iphase))/factaerant3_c + if (lptr_ant4_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant4_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant4_c_aer(n,itype,iphase))/factaerant4_c + if (lptr_ant1_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant1_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant1_o_aer(n,itype,iphase))/factaerant1_o + if (lptr_ant2_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant2_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant2_o_aer(n,itype,iphase))/factaerant2_o + if (lptr_ant3_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant3_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant3_o_aer(n,itype,iphase))/factaerant3_o + if (lptr_ant4_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_ant4_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_ant4_o_aer(n,itype,iphase))/factaerant4_o + if (lptr_biog1_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog1_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog1_c_aer(n,itype,iphase))/factaerbiog1_c + if (lptr_biog2_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog2_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog2_c_aer(n,itype,iphase))/factaerbiog2_c + if (lptr_biog3_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog3_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog3_c_aer(n,itype,iphase))/factaerbiog3_c + if (lptr_biog4_c_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog4_c_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog4_c_aer(n,itype,iphase))/factaerbiog4_c + if (lptr_biog1_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog1_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog1_o_aer(n,itype,iphase))/factaerbiog1_o + if (lptr_biog2_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog2_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog2_o_aer(n,itype,iphase))/factaerbiog2_o + if (lptr_biog3_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog3_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog3_o_aer(n,itype,iphase))/factaerbiog3_o + if (lptr_biog4_o_aer(n,itype,iphase) .ge. p1st) & + rsub(lptr_biog4_o_aer(n,itype,iphase),k1:k2,1) = & + chem(it,kt1:kt2,jt,lptr_biog4_o_aer(n,itype,iphase))/factaerbiog4_o + end do ! size end do ! type end do ! phase @@ -897,12 +3353,53 @@ subroutine mapaer_tofrom_host( imap, & (l .eq. khcl ) .or. (l .eq. knh3 ) .or. & (l .eq. ko3 ) .or. & (l .eq. kso2 ) .or. (l .eq. kh2o2 ) .or. & - (l .eq. khcho ) .or. (l .eq. khcooh ) .or. & + (l .eq. khcho ) .or. & (l .eq. koh ) .or. (l .eq. kho2 ) .or. & (l .eq. kno3 ) .or. (l .eq. kno ) .or. & (l .eq. kno2 ) .or. (l .eq. khono ) .or. & - (l .eq. kpan ) .or. (l .eq. kch3o2 ) .or. & - (l .eq. kch3oh ) .or. (l .eq. kch3ooh)) then + (l .eq. kpan ) .or. & + (l .eq. kpcg1_b_c ) .or. (l .eq. kpcg2_b_c ) .or. & + (l .eq. kpcg3_b_c ) .or. (l .eq. kpcg4_b_c ) .or. & + (l .eq. kpcg5_b_c ) .or. (l .eq. kpcg6_b_c ) .or. & + (l .eq. kpcg7_b_c ) .or. (l .eq. kpcg8_b_c ) .or. & + (l .eq. kpcg9_b_c ) .or. (l .eq. kpcg1_b_o ) .or. & + (l .eq. kpcg2_b_o ) .or. (l .eq. kpcg3_b_o ) .or. & + (l .eq. kpcg4_b_o ) .or. (l .eq. kpcg5_b_o ) .or. & + (l .eq. kpcg6_b_o ) .or. (l .eq. kpcg7_b_o ) .or. & + (l .eq. kpcg8_b_o ) .or. (l .eq. kpcg9_b_o ) .or. & + (l .eq. kopcg1_b_c ) .or. (l .eq. kopcg2_b_c ) .or. & + (l .eq. kopcg3_b_c ) .or. (l .eq. kopcg4_b_c ) .or. & + (l .eq. kopcg5_b_c ) .or. (l .eq. kopcg6_b_c ) .or. & + (l .eq. kopcg7_b_c ) .or. (l .eq. kopcg8_b_c ) .or. & + (l .eq. kopcg1_b_o ) .or. (l .eq. kopcg2_b_o ) .or. & + (l .eq. kopcg3_b_o ) .or. (l .eq. kopcg4_b_o ) .or. & + (l .eq. kopcg5_b_o ) .or. (l .eq. kopcg6_b_o ) .or. & + (l .eq. kopcg7_b_o ) .or. (l .eq. kopcg8_b_o ) .or. & + (l .eq. kpcg1_f_c ) .or. (l .eq. kpcg2_f_c ) .or. & + (l .eq. kpcg3_f_c ) .or. (l .eq. kpcg4_f_c ) .or. & + (l .eq. kpcg5_f_c ) .or. (l .eq. kpcg6_f_c ) .or. & + (l .eq. kpcg7_f_c ) .or. (l .eq. kpcg8_f_c ) .or. & + (l .eq. kpcg9_f_c ) .or. (l .eq. kpcg1_f_o ) .or. & + (l .eq. kpcg2_f_o ) .or. (l .eq. kpcg3_f_o ) .or. & + (l .eq. kpcg4_f_o ) .or. (l .eq. kpcg5_f_o ) .or. & + (l .eq. kpcg6_f_o ) .or. (l .eq. kpcg7_f_o ) .or. & + (l .eq. kpcg8_f_o ) .or. (l .eq. kpcg9_f_o ) .or. & + (l .eq. kopcg1_f_c ) .or. (l .eq. kopcg2_f_c ) .or. & + (l .eq. kopcg3_f_c ) .or. (l .eq. kopcg4_f_c ) .or. & + (l .eq. kopcg5_f_c ) .or. (l .eq. kopcg6_f_c ) .or. & + (l .eq. kopcg7_f_c ) .or. (l .eq. kopcg8_f_c ) .or. & + (l .eq. kopcg1_f_o ) .or. (l .eq. kopcg2_f_o ) .or. & + (l .eq. kopcg3_f_o ) .or. (l .eq. kopcg4_f_o ) .or. & + (l .eq. kopcg5_f_o ) .or. (l .eq. kopcg6_f_o ) .or. & + (l .eq. kopcg7_f_o ) .or. (l .eq. kopcg8_f_o ) .or. & + (l .eq. kant1_c ) .or. (l .eq. kant2_c ) .or. & + (l .eq. kant3_c ) .or. (l .eq. kant4_c ) .or. & + (l .eq. kant1_o ) .or. (l .eq. kant2_o ) .or. & + (l .eq. kant3_o ) .or. (l .eq. kant4_o ) .or. & + (l .eq. kbiog1_c ) .or. (l .eq. kbiog2_c ) .or. & + (l .eq. kbiog3_c ) .or. (l .eq. kbiog4_c ) .or. & + (l .eq. kbiog1_o ) .or. (l .eq. kbiog2_o ) .or. & + (l .eq. kbiog3_o ) .or. (l .eq. kbiog4_o )) then ido_l = 0 end if end if @@ -915,8 +3412,11 @@ subroutine mapaer_tofrom_host( imap, & p1st = param_first_scalar if (aboxtest_map_method .ne. 2) then if (aboxtest_gases_fixed .ne. 10) then - if (p_sulf .ge. p1st) & - chem(it,kt1:kt2,jt,p_sulf) = rsub(kh2so4,k1:k2,1)*factgas + if (p_h2so4 .ge. p1st) then + chem(it,kt1:kt2,jt,p_h2so4) = rsub(kh2so4,k1:k2,1)*factgas + elseif (p_sulf .ge. p1st) then + chem(it,kt1:kt2,jt,p_sulf) = rsub(kh2so4,k1:k2,1)*factgas + endif if (p_hno3 .ge. p1st) & chem(it,kt1:kt2,jt,p_hno3) = rsub(khno3,k1:k2,1)*factgas if (p_hcl .ge. p1st) & @@ -932,8 +3432,6 @@ subroutine mapaer_tofrom_host( imap, & chem(it,kt1:kt2,jt,p_h2o2) = rsub(kh2o2,k1:k2,1)*factgas if (p_hcho .ge. p1st) & chem(it,kt1:kt2,jt,p_hcho) = rsub(khcho,k1:k2,1)*factgas - if (p_ora1 .ge. p1st) & - chem(it,kt1:kt2,jt,p_ora1) = rsub(khcooh,k1:k2,1)*factgas if (p_ho .ge. p1st) & chem(it,kt1:kt2,jt,p_ho) = rsub(koh,k1:k2,1)*factgas if (p_ho2 .ge. p1st) & @@ -948,12 +3446,175 @@ subroutine mapaer_tofrom_host( imap, & chem(it,kt1:kt2,jt,p_hono) = rsub(khono,k1:k2,1)*factgas if (p_pan .ge. p1st) & chem(it,kt1:kt2,jt,p_pan) = rsub(kpan,k1:k2,1)*factgas - if (p_ch3o2 .ge. p1st) & - chem(it,kt1:kt2,jt,p_ch3o2) = rsub(kch3o2,k1:k2,1)*factgas - if (p_ch3oh .ge. p1st) & - chem(it,kt1:kt2,jt,p_ch3oh) = rsub(kch3oh,k1:k2,1)*factgas - if (p_op1 .ge. p1st) & - chem(it,kt1:kt2,jt,p_op1) = rsub(kch3ooh,k1:k2,1)*factgas + if (p_pcg1_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg1_b_c) = rsub(kpcg1_b_c,k1:k2,1)*factgas + if (p_pcg2_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg2_b_c) = rsub(kpcg2_b_c,k1:k2,1)*factgas + if (p_pcg3_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg3_b_c) = rsub(kpcg3_b_c,k1:k2,1)*factgas + if (p_pcg4_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg4_b_c) = rsub(kpcg4_b_c,k1:k2,1)*factgas + if (p_pcg5_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg5_b_c) = rsub(kpcg5_b_c,k1:k2,1)*factgas + if (p_pcg6_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg6_b_c) = rsub(kpcg6_b_c,k1:k2,1)*factgas + if (p_pcg7_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg7_b_c) = rsub(kpcg7_b_c,k1:k2,1)*factgas + if (p_pcg8_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg8_b_c) = rsub(kpcg8_b_c,k1:k2,1)*factgas + if (p_pcg9_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg9_b_c) = rsub(kpcg9_b_c,k1:k2,1)*factgas + if (p_pcg1_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg1_b_o) = rsub(kpcg1_b_o,k1:k2,1)*factgas + if (p_pcg2_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg2_b_o) = rsub(kpcg2_b_o,k1:k2,1)*factgas + if (p_pcg3_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg3_b_o) = rsub(kpcg3_b_o,k1:k2,1)*factgas + if (p_pcg4_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg4_b_o) = rsub(kpcg4_b_o,k1:k2,1)*factgas + if (p_pcg5_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg5_b_o) = rsub(kpcg5_b_o,k1:k2,1)*factgas + if (p_pcg6_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg6_b_o) = rsub(kpcg6_b_o,k1:k2,1)*factgas + if (p_pcg7_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg7_b_o) = rsub(kpcg7_b_o,k1:k2,1)*factgas + if (p_pcg8_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg8_b_o) = rsub(kpcg8_b_o,k1:k2,1)*factgas + if (p_pcg9_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg9_b_o) = rsub(kpcg9_b_o,k1:k2,1)*factgas + if (p_opcg1_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg1_b_c) = rsub(kopcg1_b_c,k1:k2,1)*factgas + if (p_opcg2_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg2_b_c) = rsub(kopcg2_b_c,k1:k2,1)*factgas + if (p_opcg3_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg3_b_c) = rsub(kopcg3_b_c,k1:k2,1)*factgas + if (p_opcg4_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg4_b_c) = rsub(kopcg4_b_c,k1:k2,1)*factgas + if (p_opcg5_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg5_b_c) = rsub(kopcg5_b_c,k1:k2,1)*factgas + if (p_opcg6_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg6_b_c) = rsub(kopcg6_b_c,k1:k2,1)*factgas + if (p_opcg7_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg7_b_c) = rsub(kopcg7_b_c,k1:k2,1)*factgas + if (p_opcg8_b_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg8_b_c) = rsub(kopcg8_b_c,k1:k2,1)*factgas + if (p_opcg1_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg1_b_o) = rsub(kopcg1_b_o,k1:k2,1)*factgas + if (p_opcg2_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg2_b_o) = rsub(kopcg2_b_o,k1:k2,1)*factgas + if (p_opcg3_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg3_b_o) = rsub(kopcg3_b_o,k1:k2,1)*factgas + if (p_opcg4_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg4_b_o) = rsub(kopcg4_b_o,k1:k2,1)*factgas + if (p_opcg5_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg5_b_o) = rsub(kopcg5_b_o,k1:k2,1)*factgas + if (p_opcg6_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg6_b_o) = rsub(kopcg6_b_o,k1:k2,1)*factgas + if (p_opcg7_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg7_b_o) = rsub(kopcg7_b_o,k1:k2,1)*factgas + if (p_opcg8_b_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg8_b_o) = rsub(kopcg8_b_o,k1:k2,1)*factgas + if (p_pcg1_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg1_f_c) = rsub(kpcg1_f_c,k1:k2,1)*factgas + if (p_pcg2_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg2_f_c) = rsub(kpcg2_f_c,k1:k2,1)*factgas + if (p_pcg3_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg3_f_c) = rsub(kpcg3_f_c,k1:k2,1)*factgas + if (p_pcg4_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg4_f_c) = rsub(kpcg4_f_c,k1:k2,1)*factgas + if (p_pcg5_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg5_f_c) = rsub(kpcg5_f_c,k1:k2,1)*factgas + if (p_pcg6_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg6_f_c) = rsub(kpcg6_f_c,k1:k2,1)*factgas + if (p_pcg7_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg7_f_c) = rsub(kpcg7_f_c,k1:k2,1)*factgas + if (p_pcg8_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg8_f_c) = rsub(kpcg8_f_c,k1:k2,1)*factgas + if (p_pcg9_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg9_f_c) = rsub(kpcg9_f_c,k1:k2,1)*factgas + if (p_pcg1_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg1_f_o) = rsub(kpcg1_f_o,k1:k2,1)*factgas + if (p_pcg2_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg2_f_o) = rsub(kpcg2_f_o,k1:k2,1)*factgas + if (p_pcg3_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg3_f_o) = rsub(kpcg3_f_o,k1:k2,1)*factgas + if (p_pcg4_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg4_f_o) = rsub(kpcg4_f_o,k1:k2,1)*factgas + if (p_pcg5_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg5_f_o) = rsub(kpcg5_f_o,k1:k2,1)*factgas + if (p_pcg6_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg6_f_o) = rsub(kpcg6_f_o,k1:k2,1)*factgas + if (p_pcg7_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg7_f_o) = rsub(kpcg7_f_o,k1:k2,1)*factgas + if (p_pcg8_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg8_f_o) = rsub(kpcg8_f_o,k1:k2,1)*factgas + if (p_pcg9_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_pcg9_f_o) = rsub(kpcg9_f_o,k1:k2,1)*factgas + if (p_opcg1_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg1_f_c) = rsub(kopcg1_f_c,k1:k2,1)*factgas + if (p_opcg2_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg2_f_c) = rsub(kopcg2_f_c,k1:k2,1)*factgas + if (p_opcg3_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg3_f_c) = rsub(kopcg3_f_c,k1:k2,1)*factgas + if (p_opcg4_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg4_f_c) = rsub(kopcg4_f_c,k1:k2,1)*factgas + if (p_opcg5_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg5_f_c) = rsub(kopcg5_f_c,k1:k2,1)*factgas + if (p_opcg6_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg6_f_c) = rsub(kopcg6_f_c,k1:k2,1)*factgas + if (p_opcg7_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg7_f_c) = rsub(kopcg7_f_c,k1:k2,1)*factgas + if (p_opcg8_f_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg8_f_c) = rsub(kopcg8_f_c,k1:k2,1)*factgas + if (p_opcg1_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg1_f_o) = rsub(kopcg1_f_o,k1:k2,1)*factgas + if (p_opcg2_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg2_f_o) = rsub(kopcg2_f_o,k1:k2,1)*factgas + if (p_opcg3_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg3_f_o) = rsub(kopcg3_f_o,k1:k2,1)*factgas + if (p_opcg4_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg4_f_o) = rsub(kopcg4_f_o,k1:k2,1)*factgas + if (p_opcg5_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg5_f_o) = rsub(kopcg5_f_o,k1:k2,1)*factgas + if (p_opcg6_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg6_f_o) = rsub(kopcg6_f_o,k1:k2,1)*factgas + if (p_opcg7_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg7_f_o) = rsub(kopcg7_f_o,k1:k2,1)*factgas + if (p_opcg8_f_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_opcg8_f_o) = rsub(kopcg8_f_o,k1:k2,1)*factgas + if (p_ant1_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant1_c) = rsub(kant1_c,k1:k2,1)*factgas + if (p_ant2_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant2_c) = rsub(kant2_c,k1:k2,1)*factgas + if (p_ant3_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant3_c) = rsub(kant3_c,k1:k2,1)*factgas + if (p_ant4_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant4_c) = rsub(kant4_c,k1:k2,1)*factgas + if (p_ant1_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant1_o) = rsub(kant1_o,k1:k2,1)*factgas + if (p_ant2_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant2_o) = rsub(kant2_o,k1:k2,1)*factgas + if (p_ant3_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant3_o) = rsub(kant3_o,k1:k2,1)*factgas + if (p_ant4_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_ant4_o) = rsub(kant4_o,k1:k2,1)*factgas + if (p_biog1_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog1_c) = rsub(kbiog1_c,k1:k2,1)*factgas + if (p_biog2_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog2_c) = rsub(kbiog2_c,k1:k2,1)*factgas + if (p_biog3_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog3_c) = rsub(kbiog3_c,k1:k2,1)*factgas + if (p_biog4_c .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog4_c) = rsub(kbiog4_c,k1:k2,1)*factgas + if (p_biog1_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog1_o) = rsub(kbiog1_o,k1:k2,1)*factgas + if (p_biog2_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog2_o) = rsub(kbiog2_o,k1:k2,1)*factgas + if (p_biog3_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog3_o) = rsub(kbiog3_o,k1:k2,1)*factgas + if (p_biog4_o .ge. p1st) & + chem(it,kt1:kt2,jt,p_biog4_o) = rsub(kbiog4_o,k1:k2,1)*factgas + end if do iphase=1,nphase_aer @@ -1000,6 +3661,261 @@ subroutine mapaer_tofrom_host( imap, & if (waterptr_aer(n,itype) .ge. p1st) & chem(it,kt1:kt2,jt,waterptr_aer(n,itype)) = & rsub(waterptr_aer(n,itype),k1:k2,1)*factaerwater + if (lptr_pcg1_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg1_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg1_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg1_b_c + if (lptr_pcg2_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg2_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg2_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg2_b_c + if (lptr_pcg3_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg3_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg3_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg3_b_c + if (lptr_pcg4_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg4_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg4_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg4_b_c + if (lptr_pcg5_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg5_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg5_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg5_b_c + if (lptr_pcg6_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg6_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg6_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg6_b_c + if (lptr_pcg7_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg7_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg7_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg7_b_c + if (lptr_pcg8_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg8_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg8_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg8_b_c + if (lptr_pcg9_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg9_b_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg9_b_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg9_b_c + if (lptr_pcg1_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg1_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg1_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg1_b_o + if (lptr_pcg2_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg2_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg2_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg2_b_o + if (lptr_pcg3_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg3_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg3_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg3_b_o + if (lptr_pcg4_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg4_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg4_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg4_b_o + if (lptr_pcg5_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg5_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg5_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg5_b_o + if (lptr_pcg6_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg6_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg6_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg6_b_o + if (lptr_pcg7_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg7_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg7_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg7_b_o + if (lptr_pcg8_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg8_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg8_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg8_b_o + if (lptr_pcg9_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg9_b_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg9_b_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg9_b_o + if (lptr_opcg1_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg1_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg1_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg1_b_c + if (lptr_opcg2_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg2_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg2_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg2_b_c + if (lptr_opcg3_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg3_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg3_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg3_b_c + if (lptr_opcg4_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg4_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg4_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg4_b_c + if (lptr_opcg5_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg5_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg5_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg5_b_c + if (lptr_opcg6_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg6_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg6_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg6_b_c + if (lptr_opcg7_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg7_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg7_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg7_b_c + if (lptr_opcg8_b_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg8_b_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg8_b_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg8_b_c + if (lptr_opcg1_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg1_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg1_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg1_b_o + if (lptr_opcg2_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg2_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg2_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg2_b_o + if (lptr_opcg3_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg3_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg3_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg3_b_o + if (lptr_opcg4_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg4_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg4_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg4_b_o + if (lptr_opcg5_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg5_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg5_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg5_b_o + if (lptr_opcg6_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg6_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg6_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg6_b_o + if (lptr_opcg7_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg7_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg7_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg7_b_o + if (lptr_opcg8_b_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg8_b_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg8_b_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg8_b_o + if (lptr_pcg1_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg1_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg1_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg1_f_c + if (lptr_pcg2_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg2_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg2_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg2_f_c + if (lptr_pcg3_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg3_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg3_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg3_f_c + if (lptr_pcg4_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg4_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg4_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg4_f_c + if (lptr_pcg5_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg5_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg5_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg5_f_c + if (lptr_pcg6_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg6_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg6_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg6_f_c + if (lptr_pcg7_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg7_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg7_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg7_f_c + if (lptr_pcg8_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg8_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg8_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg8_f_c + if (lptr_pcg9_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg9_f_c_aer(n,itype,iphase)) = & + rsub(lptr_pcg9_f_c_aer(n,itype,iphase),k1:k2,1)*factaerpcg9_f_c + if (lptr_pcg1_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg1_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg1_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg1_f_o + if (lptr_pcg2_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg2_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg2_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg2_f_o + if (lptr_pcg3_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg3_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg3_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg3_f_o + if (lptr_pcg4_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg4_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg4_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg4_f_o + if (lptr_pcg5_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg5_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg5_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg5_f_o + if (lptr_pcg6_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg6_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg6_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg6_f_o + if (lptr_pcg7_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg7_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg7_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg7_f_o + if (lptr_pcg8_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg8_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg8_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg8_f_o + if (lptr_pcg9_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_pcg9_f_o_aer(n,itype,iphase)) = & + rsub(lptr_pcg9_f_o_aer(n,itype,iphase),k1:k2,1)*factaerpcg9_f_o + if (lptr_opcg1_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg1_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg1_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg1_f_c + if (lptr_opcg2_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg2_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg2_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg2_f_c + if (lptr_opcg3_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg3_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg3_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg3_f_c + if (lptr_opcg4_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg4_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg4_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg4_f_c + if (lptr_opcg5_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg5_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg5_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg5_f_c + if (lptr_opcg6_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg6_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg6_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg6_f_c + if (lptr_opcg7_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg7_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg7_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg7_f_c + if (lptr_opcg8_f_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg8_f_c_aer(n,itype,iphase)) = & + rsub(lptr_opcg8_f_c_aer(n,itype,iphase),k1:k2,1)*factaeropcg8_f_c + if (lptr_opcg1_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg1_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg1_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg1_f_o + if (lptr_opcg2_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg2_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg2_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg2_f_o + if (lptr_opcg3_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg3_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg3_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg3_f_o + if (lptr_opcg4_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg4_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg4_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg4_f_o + if (lptr_opcg5_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg5_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg5_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg5_f_o + if (lptr_opcg6_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg6_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg6_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg6_f_o + if (lptr_opcg7_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg7_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg7_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg7_f_o + if (lptr_opcg8_f_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_opcg8_f_o_aer(n,itype,iphase)) = & + rsub(lptr_opcg8_f_o_aer(n,itype,iphase),k1:k2,1)*factaeropcg8_f_o + if (lptr_ant1_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant1_c_aer(n,itype,iphase)) = & + rsub(lptr_ant1_c_aer(n,itype,iphase),k1:k2,1)*factaerant1_c + if (lptr_ant2_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant2_c_aer(n,itype,iphase)) = & + rsub(lptr_ant2_c_aer(n,itype,iphase),k1:k2,1)*factaerant2_c + if (lptr_ant3_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant3_c_aer(n,itype,iphase)) = & + rsub(lptr_ant3_c_aer(n,itype,iphase),k1:k2,1)*factaerant3_c + if (lptr_ant4_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant4_c_aer(n,itype,iphase)) = & + rsub(lptr_ant4_c_aer(n,itype,iphase),k1:k2,1)*factaerant4_c + if (lptr_ant1_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant1_o_aer(n,itype,iphase)) = & + rsub(lptr_ant1_o_aer(n,itype,iphase),k1:k2,1)*factaerant1_o + if (lptr_ant2_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant2_o_aer(n,itype,iphase)) = & + rsub(lptr_ant2_o_aer(n,itype,iphase),k1:k2,1)*factaerant2_o + if (lptr_ant3_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant3_o_aer(n,itype,iphase)) = & + rsub(lptr_ant3_o_aer(n,itype,iphase),k1:k2,1)*factaerant3_o + if (lptr_ant4_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_ant4_o_aer(n,itype,iphase)) = & + rsub(lptr_ant4_o_aer(n,itype,iphase),k1:k2,1)*factaerant4_o + if (lptr_biog1_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog1_c_aer(n,itype,iphase)) = & + rsub(lptr_biog1_c_aer(n,itype,iphase),k1:k2,1)*factaerbiog1_c + if (lptr_biog2_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog2_c_aer(n,itype,iphase)) = & + rsub(lptr_biog2_c_aer(n,itype,iphase),k1:k2,1)*factaerbiog2_c + if (lptr_biog3_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog3_c_aer(n,itype,iphase)) = & + rsub(lptr_biog3_c_aer(n,itype,iphase),k1:k2,1)*factaerbiog3_c + if (lptr_biog4_c_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog4_c_aer(n,itype,iphase)) = & + rsub(lptr_biog4_c_aer(n,itype,iphase),k1:k2,1)*factaerbiog4_c + if (lptr_biog1_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog1_o_aer(n,itype,iphase)) = & + rsub(lptr_biog1_o_aer(n,itype,iphase),k1:k2,1)*factaerbiog1_o + if (lptr_biog2_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog2_o_aer(n,itype,iphase)) = & + rsub(lptr_biog2_o_aer(n,itype,iphase),k1:k2,1)*factaerbiog2_o + if (lptr_biog3_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog3_o_aer(n,itype,iphase)) = & + rsub(lptr_biog3_o_aer(n,itype,iphase),k1:k2,1)*factaerbiog3_o + if (lptr_biog4_o_aer(n,itype,iphase) .ge. p1st) & + chem(it,kt1:kt2,jt,lptr_biog4_o_aer(n,itype,iphase)) = & + rsub(lptr_biog4_o_aer(n,itype,iphase),k1:k2,1)*factaerbiog4_o + + + end do ! size end do ! type end do ! phase @@ -1159,7 +4075,7 @@ subroutine init_data_mosaic_asect( is_aerosol ) ! ! set master aerosol chemical types ! - ntot_mastercomp_aer = 11 + ntot_mastercomp_aer = 94 l = 1 mastercompindx_so4_aer = l @@ -1183,61 +4099,644 @@ subroutine init_data_mosaic_asect( is_aerosol ) hygro_mastercomp_aer(l ) = hygro_cl_aer l = 4 - mastercompindx_msa_aer = l - name_mastercomp_aer( l ) = 'msa' - dens_mastercomp_aer( l ) = dens_msa_aer - mw_mastercomp_aer( l ) = mw_msa_aer - hygro_mastercomp_aer(l ) = hygro_msa_aer - - l = 5 mastercompindx_co3_aer = l name_mastercomp_aer( l ) = 'carbonate' dens_mastercomp_aer( l ) = dens_co3_aer mw_mastercomp_aer( l ) = mw_co3_aer hygro_mastercomp_aer(l ) = hygro_co3_aer - l = 6 + l = 5 mastercompindx_nh4_aer = l name_mastercomp_aer( l ) = 'ammonium' dens_mastercomp_aer( l ) = dens_nh4_aer mw_mastercomp_aer( l ) = mw_nh4_aer hygro_mastercomp_aer(l ) = hygro_nh4_aer - l = 7 + l = 6 mastercompindx_na_aer = l name_mastercomp_aer( l ) = 'sodium' dens_mastercomp_aer( l ) = dens_na_aer mw_mastercomp_aer( l ) = mw_na_aer hygro_mastercomp_aer(l ) = hygro_na_aer - l = 8 + l = 7 mastercompindx_ca_aer = l name_mastercomp_aer( l ) = 'calcium' dens_mastercomp_aer( l ) = dens_ca_aer mw_mastercomp_aer( l ) = mw_ca_aer hygro_mastercomp_aer(l ) = hygro_ca_aer - l = 9 + l = 8 mastercompindx_oin_aer = l name_mastercomp_aer( l ) = 'otherinorg' dens_mastercomp_aer( l ) = dens_oin_aer mw_mastercomp_aer( l ) = mw_oin_aer hygro_mastercomp_aer(l ) = hygro_oin_aer - l = 10 + l = 9 mastercompindx_oc_aer = l name_mastercomp_aer( l ) = 'organic-c' dens_mastercomp_aer( l ) = dens_oc_aer mw_mastercomp_aer( l ) = mw_oc_aer hygro_mastercomp_aer(l ) = hygro_oc_aer - l = 11 + l = 10 mastercompindx_bc_aer = l name_mastercomp_aer( l ) = 'black-c' dens_mastercomp_aer( l ) = dens_bc_aer mw_mastercomp_aer( l ) = mw_bc_aer hygro_mastercomp_aer(l ) = hygro_bc_aer + l = 11 + mastercompindx_pcg1_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg1_b_c' + dens_mastercomp_aer( l ) = dens_pcg1_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg1_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg1_b_c_aer + + l = 12 + mastercompindx_pcg2_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg2_b_c' + dens_mastercomp_aer( l ) = dens_pcg2_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg2_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg2_b_c_aer + + l = 13 + mastercompindx_pcg3_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg3_b_c' + dens_mastercomp_aer( l ) = dens_pcg3_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg3_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg3_b_c_aer + + l = 14 + mastercompindx_pcg4_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg4_b_c' + dens_mastercomp_aer( l ) = dens_pcg4_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg4_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg4_b_c_aer + + l = 15 + mastercompindx_pcg5_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg5_b_c' + dens_mastercomp_aer( l ) = dens_pcg5_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg5_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg5_b_c_aer + + l = 16 + mastercompindx_pcg6_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg6_b_c' + dens_mastercomp_aer( l ) = dens_pcg6_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg6_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg6_b_c_aer + + l = 17 + mastercompindx_pcg7_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg7_b_c' + dens_mastercomp_aer( l ) = dens_pcg7_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg7_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg7_b_c_aer + + l = 18 + mastercompindx_pcg8_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg8_b_c' + dens_mastercomp_aer( l ) = dens_pcg8_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg8_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg8_b_c_aer + + l = 19 + mastercompindx_pcg9_b_c_aer = l + name_mastercomp_aer( l ) = 'pcg9_b_c' + dens_mastercomp_aer( l ) = dens_pcg9_b_c_aer + mw_mastercomp_aer( l ) = mw_pcg9_b_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg9_b_c_aer + + l = 20 + mastercompindx_pcg1_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg1_b_o' + dens_mastercomp_aer( l ) = dens_pcg1_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg1_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg1_b_o_aer + + l = 21 + mastercompindx_pcg2_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg2_b_o' + dens_mastercomp_aer( l ) = dens_pcg2_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg2_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg2_b_o_aer + + l = 22 + mastercompindx_pcg3_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg3_b_o' + dens_mastercomp_aer( l ) = dens_pcg3_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg3_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg3_b_o_aer + + l = 23 + mastercompindx_pcg4_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg4_b_o' + dens_mastercomp_aer( l ) = dens_pcg4_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg4_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg4_b_o_aer + + l = 24 + mastercompindx_pcg5_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg5_b_o' + dens_mastercomp_aer( l ) = dens_pcg5_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg5_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg5_b_o_aer + + l = 25 + mastercompindx_pcg6_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg6_b_o' + dens_mastercomp_aer( l ) = dens_pcg6_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg6_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg6_b_o_aer + + l = 26 + mastercompindx_pcg7_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg7_b_o' + dens_mastercomp_aer( l ) = dens_pcg7_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg7_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg7_b_o_aer + + l = 27 + mastercompindx_pcg8_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg8_b_o' + dens_mastercomp_aer( l ) = dens_pcg8_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg8_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg8_b_o_aer + + l = 28 + mastercompindx_pcg9_b_o_aer = l + name_mastercomp_aer( l ) = 'pcg9_b_o' + dens_mastercomp_aer( l ) = dens_pcg9_b_o_aer + mw_mastercomp_aer( l ) = mw_pcg9_b_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg9_b_o_aer + + l = 29 + mastercompindx_opcg1_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg1_b_c' + dens_mastercomp_aer( l ) = dens_opcg1_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg1_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg1_b_c_aer + + l = 30 + mastercompindx_opcg2_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg2_b_c' + dens_mastercomp_aer( l ) = dens_opcg2_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg2_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg2_b_c_aer + + l = 31 + mastercompindx_opcg3_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg3_b_c' + dens_mastercomp_aer( l ) = dens_opcg3_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg3_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg3_b_c_aer + + l = 32 + mastercompindx_opcg4_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg4_b_c' + dens_mastercomp_aer( l ) = dens_opcg4_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg4_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg4_b_c_aer + + l = 33 + mastercompindx_opcg5_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg5_b_c' + dens_mastercomp_aer( l ) = dens_opcg5_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg5_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg5_b_c_aer + + l = 34 + mastercompindx_opcg6_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg6_b_c' + dens_mastercomp_aer( l ) = dens_opcg6_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg6_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg6_b_c_aer + + l = 35 + mastercompindx_opcg7_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg7_b_c' + dens_mastercomp_aer( l ) = dens_opcg7_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg7_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg7_b_c_aer + + l = 36 + mastercompindx_opcg8_b_c_aer = l + name_mastercomp_aer( l ) = 'opcg8_b_c' + dens_mastercomp_aer( l ) = dens_opcg8_b_c_aer + mw_mastercomp_aer( l ) = mw_opcg8_b_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg8_b_c_aer + + l = 37 + mastercompindx_opcg1_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg1_b_o' + dens_mastercomp_aer( l ) = dens_opcg1_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg1_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg1_b_o_aer + + l = 38 + mastercompindx_opcg2_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg2_b_o' + dens_mastercomp_aer( l ) = dens_opcg2_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg2_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg2_b_o_aer + + l = 39 + mastercompindx_opcg3_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg3_b_o' + dens_mastercomp_aer( l ) = dens_opcg3_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg3_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg3_b_o_aer + + l = 40 + mastercompindx_opcg4_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg4_b_o' + dens_mastercomp_aer( l ) = dens_opcg4_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg4_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg4_b_o_aer + + l = 41 + mastercompindx_opcg5_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg5_b_o' + dens_mastercomp_aer( l ) = dens_opcg5_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg5_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg5_b_o_aer + + l = 42 + mastercompindx_opcg6_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg6_b_o' + dens_mastercomp_aer( l ) = dens_opcg6_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg6_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg6_b_o_aer + + l = 43 + mastercompindx_opcg7_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg7_b_o' + dens_mastercomp_aer( l ) = dens_opcg7_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg7_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg7_b_o_aer + + l = 44 + mastercompindx_opcg8_b_o_aer = l + name_mastercomp_aer( l ) = 'opcg8_b_o' + dens_mastercomp_aer( l ) = dens_opcg8_b_o_aer + mw_mastercomp_aer( l ) = mw_opcg8_b_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg8_b_o_aer + + l = 45 + mastercompindx_pcg1_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg1_f_c' + dens_mastercomp_aer( l ) = dens_pcg1_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg1_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg1_f_c_aer + + l = 46 + mastercompindx_pcg2_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg2_f_c' + dens_mastercomp_aer( l ) = dens_pcg2_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg2_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg2_f_c_aer + + l = 47 + mastercompindx_pcg3_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg3_f_c' + dens_mastercomp_aer( l ) = dens_pcg3_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg3_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg3_f_c_aer + + l = 48 + mastercompindx_pcg4_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg4_f_c' + dens_mastercomp_aer( l ) = dens_pcg4_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg4_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg4_f_c_aer + + l = 49 + mastercompindx_pcg5_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg5_f_c' + dens_mastercomp_aer( l ) = dens_pcg5_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg5_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg5_f_c_aer + + l = 50 + mastercompindx_pcg6_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg6_f_c' + dens_mastercomp_aer( l ) = dens_pcg6_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg6_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg6_f_c_aer + + l = 51 + mastercompindx_pcg7_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg7_f_c' + dens_mastercomp_aer( l ) = dens_pcg7_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg7_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg7_f_c_aer + + l = 52 + mastercompindx_pcg8_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg8_f_c' + dens_mastercomp_aer( l ) = dens_pcg8_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg8_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg8_f_c_aer + + l = 53 + mastercompindx_pcg9_f_c_aer = l + name_mastercomp_aer( l ) = 'pcg9_f_c' + dens_mastercomp_aer( l ) = dens_pcg9_f_c_aer + mw_mastercomp_aer( l ) = mw_pcg9_f_c_aer + hygro_mastercomp_aer(l ) = hygro_pcg9_f_c_aer + + l = 54 + mastercompindx_pcg1_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg1_f_o' + dens_mastercomp_aer( l ) = dens_pcg1_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg1_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg1_f_o_aer + + l = 55 + mastercompindx_pcg2_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg2_f_o' + dens_mastercomp_aer( l ) = dens_pcg2_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg2_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg2_f_o_aer + + l = 56 + mastercompindx_pcg3_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg3_f_o' + dens_mastercomp_aer( l ) = dens_pcg3_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg3_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg3_f_o_aer + + l = 57 + mastercompindx_pcg4_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg4_f_o' + dens_mastercomp_aer( l ) = dens_pcg4_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg4_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg4_f_o_aer + + l = 58 + mastercompindx_pcg5_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg5_f_o' + dens_mastercomp_aer( l ) = dens_pcg5_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg5_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg5_f_o_aer + + l = 59 + mastercompindx_pcg6_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg6_f_o' + dens_mastercomp_aer( l ) = dens_pcg6_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg6_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg6_f_o_aer + + l = 60 + mastercompindx_pcg7_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg7_f_o' + dens_mastercomp_aer( l ) = dens_pcg7_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg7_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg7_f_o_aer + + l = 61 + mastercompindx_pcg8_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg8_f_o' + dens_mastercomp_aer( l ) = dens_pcg8_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg8_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg8_f_o_aer + + l = 62 + mastercompindx_pcg9_f_o_aer = l + name_mastercomp_aer( l ) = 'pcg9_f_o' + dens_mastercomp_aer( l ) = dens_pcg9_f_o_aer + mw_mastercomp_aer( l ) = mw_pcg9_f_o_aer + hygro_mastercomp_aer(l ) = hygro_pcg9_f_o_aer + + l = 63 + mastercompindx_opcg1_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg1_f_c' + dens_mastercomp_aer( l ) = dens_opcg1_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg1_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg1_f_c_aer + + l = 64 + mastercompindx_opcg2_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg2_f_c' + dens_mastercomp_aer( l ) = dens_opcg2_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg2_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg2_f_c_aer + + l = 65 + mastercompindx_opcg3_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg3_f_c' + dens_mastercomp_aer( l ) = dens_opcg3_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg3_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg3_f_c_aer + + l = 66 + mastercompindx_opcg4_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg4_f_c' + dens_mastercomp_aer( l ) = dens_opcg4_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg4_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg4_f_c_aer + + l = 67 + mastercompindx_opcg5_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg5_f_c' + dens_mastercomp_aer( l ) = dens_opcg5_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg5_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg5_f_c_aer + + l = 68 + mastercompindx_opcg6_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg6_f_c' + dens_mastercomp_aer( l ) = dens_opcg6_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg6_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg6_f_c_aer + + l = 69 + mastercompindx_opcg7_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg7_f_c' + dens_mastercomp_aer( l ) = dens_opcg7_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg7_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg7_f_c_aer + + l = 70 + mastercompindx_opcg8_f_c_aer = l + name_mastercomp_aer( l ) = 'opcg8_f_c' + dens_mastercomp_aer( l ) = dens_opcg8_f_c_aer + mw_mastercomp_aer( l ) = mw_opcg8_f_c_aer + hygro_mastercomp_aer(l ) = hygro_opcg8_f_c_aer + + l = 71 + mastercompindx_opcg1_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg1_f_o' + dens_mastercomp_aer( l ) = dens_opcg1_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg1_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg1_f_o_aer + + l = 72 + mastercompindx_opcg2_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg2_f_o' + dens_mastercomp_aer( l ) = dens_opcg2_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg2_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg2_f_o_aer + + l = 73 + mastercompindx_opcg3_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg3_f_o' + dens_mastercomp_aer( l ) = dens_opcg3_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg3_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg3_f_o_aer + + l = 74 + mastercompindx_opcg4_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg4_f_o' + dens_mastercomp_aer( l ) = dens_opcg4_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg4_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg4_f_o_aer + + l = 75 + mastercompindx_opcg5_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg5_f_o' + dens_mastercomp_aer( l ) = dens_opcg5_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg5_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg5_f_o_aer + + l = 76 + mastercompindx_opcg6_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg6_f_o' + dens_mastercomp_aer( l ) = dens_opcg6_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg6_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg6_f_o_aer + + l = 77 + mastercompindx_opcg7_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg7_f_o' + dens_mastercomp_aer( l ) = dens_opcg7_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg7_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg7_f_o_aer + + l = 78 + mastercompindx_opcg8_f_o_aer = l + name_mastercomp_aer( l ) = 'opcg8_f_o' + dens_mastercomp_aer( l ) = dens_opcg8_f_o_aer + mw_mastercomp_aer( l ) = mw_opcg8_f_o_aer + hygro_mastercomp_aer(l ) = hygro_opcg8_f_o_aer + + l = 79 + mastercompindx_ant1_c_aer = l + name_mastercomp_aer( l ) = 'ant1_c' + dens_mastercomp_aer( l ) = dens_ant1_c_aer + mw_mastercomp_aer( l ) = mw_ant1_c_aer + hygro_mastercomp_aer(l ) = hygro_ant1_c_aer + + l = 80 + mastercompindx_ant2_c_aer = l + name_mastercomp_aer( l ) = 'ant2_c' + dens_mastercomp_aer( l ) = dens_ant2_c_aer + mw_mastercomp_aer( l ) = mw_ant2_c_aer + hygro_mastercomp_aer(l ) = hygro_ant2_c_aer + + l = 81 + mastercompindx_ant3_c_aer = l + name_mastercomp_aer( l ) = 'ant3_c' + dens_mastercomp_aer( l ) = dens_ant3_c_aer + mw_mastercomp_aer( l ) = mw_ant3_c_aer + hygro_mastercomp_aer(l ) = hygro_ant3_c_aer + + l = 82 + mastercompindx_ant4_c_aer = l + name_mastercomp_aer( l ) = 'ant4_c' + dens_mastercomp_aer( l ) = dens_ant4_c_aer + mw_mastercomp_aer( l ) = mw_ant4_c_aer + hygro_mastercomp_aer(l ) = hygro_ant4_c_aer + + l = 83 + mastercompindx_ant1_o_aer = l + name_mastercomp_aer( l ) = 'ant1_o' + dens_mastercomp_aer( l ) = dens_ant1_o_aer + mw_mastercomp_aer( l ) = mw_ant1_o_aer + hygro_mastercomp_aer(l ) = hygro_ant1_o_aer + + l = 84 + mastercompindx_ant2_o_aer = l + name_mastercomp_aer( l ) = 'ant2_o' + dens_mastercomp_aer( l ) = dens_ant2_o_aer + mw_mastercomp_aer( l ) = mw_ant2_o_aer + hygro_mastercomp_aer(l ) = hygro_ant2_o_aer + + l = 85 + mastercompindx_ant3_o_aer = l + name_mastercomp_aer( l ) = 'ant3_o' + dens_mastercomp_aer( l ) = dens_ant3_o_aer + mw_mastercomp_aer( l ) = mw_ant3_o_aer + hygro_mastercomp_aer(l ) = hygro_ant3_o_aer + + l = 86 + mastercompindx_ant4_o_aer = l + name_mastercomp_aer( l ) = 'ant4_o' + dens_mastercomp_aer( l ) = dens_ant4_o_aer + mw_mastercomp_aer( l ) = mw_ant4_o_aer + hygro_mastercomp_aer(l ) = hygro_ant4_o_aer + + + l = 87 + mastercompindx_biog1_c_aer = l + name_mastercomp_aer( l ) = 'biog1_c' + dens_mastercomp_aer( l ) = dens_biog1_c_aer + mw_mastercomp_aer( l ) = mw_biog1_c_aer + hygro_mastercomp_aer(l ) = hygro_biog1_c_aer + + l = 88 + mastercompindx_biog2_c_aer = l + name_mastercomp_aer( l ) = 'biog2_c' + dens_mastercomp_aer( l ) = dens_biog2_c_aer + mw_mastercomp_aer( l ) = mw_biog2_c_aer + hygro_mastercomp_aer(l ) = hygro_biog2_c_aer + + l = 89 + mastercompindx_biog3_c_aer = l + name_mastercomp_aer( l ) = 'biog3_c' + dens_mastercomp_aer( l ) = dens_biog3_c_aer + mw_mastercomp_aer( l ) = mw_biog3_c_aer + hygro_mastercomp_aer(l ) = hygro_biog3_c_aer + + l = 90 + mastercompindx_biog4_c_aer = l + name_mastercomp_aer( l ) = 'biog4_c' + dens_mastercomp_aer( l ) = dens_biog4_c_aer + mw_mastercomp_aer( l ) = mw_biog4_c_aer + hygro_mastercomp_aer(l ) = hygro_biog4_c_aer + + l = 91 + mastercompindx_biog1_o_aer = l + name_mastercomp_aer( l ) = 'biog1_o' + dens_mastercomp_aer( l ) = dens_biog1_o_aer + mw_mastercomp_aer( l ) = mw_biog1_o_aer + hygro_mastercomp_aer(l ) = hygro_biog1_o_aer + + l = 92 + mastercompindx_biog2_o_aer = l + name_mastercomp_aer( l ) = 'biog2_o' + dens_mastercomp_aer( l ) = dens_biog2_o_aer + mw_mastercomp_aer( l ) = mw_biog2_o_aer + hygro_mastercomp_aer(l ) = hygro_biog2_o_aer + + l = 93 + mastercompindx_biog3_o_aer = l + name_mastercomp_aer( l ) = 'biog3_o' + dens_mastercomp_aer( l ) = dens_biog3_o_aer + mw_mastercomp_aer( l ) = mw_biog3_o_aer + hygro_mastercomp_aer(l ) = hygro_biog3_o_aer + + l = 94 + mastercompindx_biog4_o_aer = l + name_mastercomp_aer( l ) = 'biog4_o' + dens_mastercomp_aer( l ) = dens_biog4_o_aer + mw_mastercomp_aer( l ) = mw_biog4_o_aer + hygro_mastercomp_aer(l ) = hygro_biog4_o_aer + + ! ! set section size arrays @@ -1291,9 +4790,32 @@ subroutine init_data_mosaic_ptr( is_aerosol ) use module_data_mosaic_asect use module_data_mosaic_other, only: & kh2so4, khno3, khcl, knh3, ko3, kh2o, ktemp, & - kso2, kh2o2, khcho, khcooh, koh, kho2, & - kno3, kno, kno2, khono, kpan, kch3o2, kch3oh, kch3ooh, & - lmaxd, l2maxd, ltot, ltot2, lunout, lunerr, name + kso2, kh2o2, khcho, koh, kho2, & + kno3, kno, kno2, khono, kpan, & + lmaxd, l2maxd, ltot, ltot2, lunout, lunerr, & + name,kpcg1_b_c,kpcg2_b_c,kpcg3_b_c,kpcg4_b_c, & + kpcg5_b_c,kpcg6_b_c,kpcg7_b_c,kpcg8_b_c, & + kpcg9_b_c,kpcg1_b_o,kpcg2_b_o,kpcg3_b_o, & + kpcg4_b_o,kpcg5_b_o,kpcg6_b_o,kpcg7_b_o, & + kpcg8_b_o,kpcg9_b_o,kopcg1_b_c,kopcg2_b_c,& + kopcg3_b_c, kopcg4_b_c,kopcg5_b_c,kopcg6_b_c,& + kopcg7_b_c,kopcg8_b_c,kopcg1_b_o,kopcg2_b_o,& + kopcg3_b_o,kopcg4_b_o,kopcg5_b_o,kopcg6_b_o,& + kopcg7_b_o,kopcg8_b_o,& + kpcg1_f_c,kpcg2_f_c,kpcg3_f_c,kpcg4_f_c, & + kpcg5_f_c,kpcg6_f_c,kpcg7_f_c,kpcg8_f_c, & + kpcg9_f_c,kpcg1_f_o,kpcg2_f_o,kpcg3_f_o, & + kpcg4_f_o,kpcg5_f_o,kpcg6_f_o,kpcg7_f_o, & + kpcg8_f_o,kpcg9_f_o,kopcg1_f_c,kopcg2_f_c,& + kopcg3_f_c, kopcg4_f_c,kopcg5_f_c,kopcg6_f_c,& + kopcg7_f_c,kopcg8_f_c,kopcg1_f_o,kopcg2_f_o,& + kopcg3_f_o,kopcg4_f_o,kopcg5_f_o,kopcg6_f_o,& + kopcg7_f_o,kopcg8_f_o, & + kant1_c,kant2_c,kant3_c,kant4_c,kant1_o,kant2_o, & + kant3_o,kant4_o, & + kbiog1_c,kbiog2_c,kbiog3_c,kbiog4_c,kbiog1_o,kbiog2_o, & + kbiog3_o,kbiog4_o + use module_peg_util, only: peg_error_fatal, peg_message use module_mosaic_wetscav, only: initwet @@ -1312,7 +4834,31 @@ subroutine init_data_mosaic_ptr( is_aerosol ) integer ncomp_plustracer_dum(maxd_asize,maxd_aphase) integer y_so4, y_no3, y_cl, y_msa, y_co3, y_nh4, y_na, & - y_ca, y_oin, y_oc, y_bc, y_hysw, y_water, y_num + y_ca, y_oin, y_oc, y_bc, y_hysw, y_water, & + y_num, & + y_pcg1_b_c,y_pcg2_b_c,y_pcg3_b_c,y_pcg4_b_c, & + y_pcg5_b_c,y_pcg6_b_c,y_pcg7_b_c,y_pcg8_b_c, & + y_pcg9_b_c,y_pcg1_b_o,y_pcg2_b_o,y_pcg3_b_o, & + y_pcg4_b_o,y_pcg5_b_o,y_pcg6_b_o,y_pcg7_b_o, & + y_pcg8_b_o,y_pcg9_b_o,y_opcg1_b_c,y_opcg2_b_c,& + y_opcg3_b_c, y_opcg4_b_c,y_opcg5_b_c,y_opcg6_b_c,& + y_opcg7_b_c,y_opcg8_b_c,y_opcg1_b_o,y_opcg2_b_o,& + y_opcg3_b_o,y_opcg4_b_o,y_opcg5_b_o,y_opcg6_b_o,& + y_opcg7_b_o,y_opcg8_b_o,& + y_pcg1_f_c,y_pcg2_f_c,y_pcg3_f_c,y_pcg4_f_c, & + y_pcg5_f_c,y_pcg6_f_c,y_pcg7_f_c,y_pcg8_f_c, & + y_pcg9_f_c,y_pcg1_f_o,y_pcg2_f_o,y_pcg3_f_o, & + y_pcg4_f_o,y_pcg5_f_o,y_pcg6_f_o,y_pcg7_f_o, & + y_pcg8_f_o,y_pcg9_f_o,y_opcg1_f_c,y_opcg2_f_c,& + y_opcg3_f_c, y_opcg4_f_c,y_opcg5_f_c,y_opcg6_f_c,& + y_opcg7_f_c,y_opcg8_f_c,y_opcg1_f_o,y_opcg2_f_o,& + y_opcg3_f_o,y_opcg4_f_o,y_opcg5_f_o,y_opcg6_f_o,& + y_opcg7_f_o,y_opcg8_f_o, & + y_ant1_c,y_ant2_c,y_ant3_c,y_ant4_c, & + y_ant1_o,y_ant2_o,y_ant3_o,y_ant4_o, & + y_biog1_c,y_biog2_c,y_biog3_c,y_biog4_c, & + y_biog1_o,y_biog2_o,y_biog3_o,y_biog4_o + integer y_cw_so4, y_cw_no3, y_cw_cl, y_cw_msa, y_cw_co3, & y_cw_nh4, y_cw_na, & y_cw_ca, y_cw_oin, y_cw_oc, y_cw_bc, y_cw_num @@ -1341,75 +4887,498 @@ subroutine init_data_mosaic_ptr( is_aerosol ) hyswptr_aer(:,itype) = 1 waterptr_aer(:,itype) = 1 numptr_aer(:,itype,:) = 1 + lptr_pcg1_b_c_aer(:,itype,:) = 1 + lptr_pcg2_b_c_aer(:,itype,:) = 1 + lptr_pcg3_b_c_aer(:,itype,:) = 1 + lptr_pcg4_b_c_aer(:,itype,:) = 1 + lptr_pcg5_b_c_aer(:,itype,:) = 1 + lptr_pcg6_b_c_aer(:,itype,:) = 1 + lptr_pcg7_b_c_aer(:,itype,:) = 1 + lptr_pcg8_b_c_aer(:,itype,:) = 1 + lptr_pcg9_b_c_aer(:,itype,:) = 1 + lptr_pcg1_b_o_aer(:,itype,:) = 1 + lptr_pcg2_b_o_aer(:,itype,:) = 1 + lptr_pcg3_b_o_aer(:,itype,:) = 1 + lptr_pcg4_b_o_aer(:,itype,:) = 1 + lptr_pcg5_b_o_aer(:,itype,:) = 1 + lptr_pcg6_b_o_aer(:,itype,:) = 1 + lptr_pcg7_b_o_aer(:,itype,:) = 1 + lptr_pcg8_b_o_aer(:,itype,:) = 1 + lptr_pcg9_b_o_aer(:,itype,:) = 1 + lptr_opcg1_b_c_aer(:,itype,:) = 1 + lptr_opcg2_b_c_aer(:,itype,:) = 1 + lptr_opcg3_b_c_aer(:,itype,:) = 1 + lptr_opcg4_b_c_aer(:,itype,:) = 1 + lptr_opcg5_b_c_aer(:,itype,:) = 1 + lptr_opcg6_b_c_aer(:,itype,:) = 1 + lptr_opcg7_b_c_aer(:,itype,:) = 1 + lptr_opcg8_b_c_aer(:,itype,:) = 1 + lptr_opcg1_b_o_aer(:,itype,:) = 1 + lptr_opcg2_b_o_aer(:,itype,:) = 1 + lptr_opcg3_b_o_aer(:,itype,:) = 1 + lptr_opcg4_b_o_aer(:,itype,:) = 1 + lptr_opcg5_b_o_aer(:,itype,:) = 1 + lptr_opcg6_b_o_aer(:,itype,:) = 1 + lptr_opcg7_b_o_aer(:,itype,:) = 1 + lptr_opcg8_b_o_aer(:,itype,:) = 1 + lptr_pcg1_f_c_aer(:,itype,:) = 1 + lptr_pcg2_f_c_aer(:,itype,:) = 1 + lptr_pcg3_f_c_aer(:,itype,:) = 1 + lptr_pcg4_f_c_aer(:,itype,:) = 1 + lptr_pcg5_f_c_aer(:,itype,:) = 1 + lptr_pcg6_f_c_aer(:,itype,:) = 1 + lptr_pcg7_f_c_aer(:,itype,:) = 1 + lptr_pcg8_f_c_aer(:,itype,:) = 1 + lptr_pcg9_f_c_aer(:,itype,:) = 1 + lptr_pcg1_f_o_aer(:,itype,:) = 1 + lptr_pcg2_f_o_aer(:,itype,:) = 1 + lptr_pcg3_f_o_aer(:,itype,:) = 1 + lptr_pcg4_f_o_aer(:,itype,:) = 1 + lptr_pcg5_f_o_aer(:,itype,:) = 1 + lptr_pcg6_f_o_aer(:,itype,:) = 1 + lptr_pcg7_f_o_aer(:,itype,:) = 1 + lptr_pcg8_f_o_aer(:,itype,:) = 1 + lptr_pcg9_f_o_aer(:,itype,:) = 1 + lptr_opcg1_f_c_aer(:,itype,:) = 1 + lptr_opcg2_f_c_aer(:,itype,:) = 1 + lptr_opcg3_f_c_aer(:,itype,:) = 1 + lptr_opcg4_f_c_aer(:,itype,:) = 1 + lptr_opcg5_f_c_aer(:,itype,:) = 1 + lptr_opcg6_f_c_aer(:,itype,:) = 1 + lptr_opcg7_f_c_aer(:,itype,:) = 1 + lptr_opcg8_f_c_aer(:,itype,:) = 1 + lptr_opcg1_f_o_aer(:,itype,:) = 1 + lptr_opcg2_f_o_aer(:,itype,:) = 1 + lptr_opcg3_f_o_aer(:,itype,:) = 1 + lptr_opcg4_f_o_aer(:,itype,:) = 1 + lptr_opcg5_f_o_aer(:,itype,:) = 1 + lptr_opcg6_f_o_aer(:,itype,:) = 1 + lptr_opcg7_f_o_aer(:,itype,:) = 1 + lptr_opcg8_f_o_aer(:,itype,:) = 1 + lptr_ant1_c_aer(:,itype,:) = 1 + lptr_ant2_c_aer(:,itype,:) = 1 + lptr_ant3_c_aer(:,itype,:) = 1 + lptr_ant4_c_aer(:,itype,:) = 1 + lptr_ant1_o_aer(:,itype,:) = 1 + lptr_ant2_o_aer(:,itype,:) = 1 + lptr_ant3_o_aer(:,itype,:) = 1 + lptr_ant4_o_aer(:,itype,:) = 1 + lptr_biog1_c_aer(:,itype,:) = 1 + lptr_biog2_c_aer(:,itype,:) = 1 + lptr_biog3_c_aer(:,itype,:) = 1 + lptr_biog4_c_aer(:,itype,:) = 1 + lptr_biog1_o_aer(:,itype,:) = 1 + lptr_biog2_o_aer(:,itype,:) = 1 + lptr_biog3_o_aer(:,itype,:) = 1 + lptr_biog4_o_aer(:,itype,:) = 1 if (nsize_aer(itype) .ge. 1) then - lptr_so4_aer(01,itype,ai_phase) = p_so4_a01 - lptr_no3_aer(01,itype,ai_phase) = p_no3_a01 - lptr_cl_aer(01,itype,ai_phase) = p_cl_a01 - lptr_msa_aer(01,itype,ai_phase) = p_msa_a01 - lptr_co3_aer(01,itype,ai_phase) = p_co3_a01 - lptr_nh4_aer(01,itype,ai_phase) = p_nh4_a01 - lptr_na_aer(01,itype,ai_phase) = p_na_a01 - lptr_ca_aer(01,itype,ai_phase) = p_ca_a01 - lptr_oin_aer(01,itype,ai_phase) = p_oin_a01 - lptr_oc_aer(01,itype,ai_phase) = p_oc_a01 - lptr_bc_aer(01,itype,ai_phase) = p_bc_a01 - hyswptr_aer(01,itype) = p_hysw_a01 - waterptr_aer(01,itype) = p_water_a01 - numptr_aer(01,itype,ai_phase) = p_num_a01 + + if (p_so4_a01 .ge. p1st) lptr_so4_aer(01,itype,ai_phase) = p_so4_a01 + if (p_no3_a01 .ge. p1st) lptr_no3_aer(01,itype,ai_phase) = p_no3_a01 + if (p_cl_a01 .ge. p1st) lptr_cl_aer(01,itype,ai_phase) = p_cl_a01 + if (p_msa_a01 .ge. p1st) lptr_msa_aer(01,itype,ai_phase) = p_msa_a01 + if (p_co3_a01 .ge. p1st) lptr_co3_aer(01,itype,ai_phase) = p_co3_a01 + if (p_nh4_a01 .ge. p1st) lptr_nh4_aer(01,itype,ai_phase) = p_nh4_a01 + if (p_na_a01 .ge. p1st) lptr_na_aer(01,itype,ai_phase) = p_na_a01 + if (p_ca_a01 .ge. p1st) lptr_ca_aer(01,itype,ai_phase) = p_ca_a01 + if (p_oin_a01 .ge. p1st) lptr_oin_aer(01,itype,ai_phase) = p_oin_a01 + if (p_oc_a01 .ge. p1st) lptr_oc_aer(01,itype,ai_phase) = p_oc_a01 + if (p_bc_a01 .ge. p1st) lptr_bc_aer(01,itype,ai_phase) = p_bc_a01 + if (p_hysw_a01 .ge. p1st) hyswptr_aer(01,itype) = p_hysw_a01 + if (p_water_a01 .ge. p1st) waterptr_aer(01,itype) = p_water_a01 + if (p_pcg1_b_c_a01 .ge. p1st) lptr_pcg1_b_c_aer(01,itype,ai_phase) = p_pcg1_b_c_a01 + if (p_pcg2_b_c_a01 .ge. p1st) lptr_pcg2_b_c_aer(01,itype,ai_phase) = p_pcg2_b_c_a01 + if (p_pcg3_b_c_a01 .ge. p1st) lptr_pcg3_b_c_aer(01,itype,ai_phase) = p_pcg3_b_c_a01 + if (p_pcg4_b_c_a01 .ge. p1st) lptr_pcg4_b_c_aer(01,itype,ai_phase) = p_pcg4_b_c_a01 + if (p_pcg5_b_c_a01 .ge. p1st) lptr_pcg5_b_c_aer(01,itype,ai_phase) = p_pcg5_b_c_a01 + if (p_pcg6_b_c_a01 .ge. p1st) lptr_pcg6_b_c_aer(01,itype,ai_phase) = p_pcg6_b_c_a01 + if (p_pcg7_b_c_a01 .ge. p1st) lptr_pcg7_b_c_aer(01,itype,ai_phase) = p_pcg7_b_c_a01 + if (p_pcg8_b_c_a01 .ge. p1st) lptr_pcg8_b_c_aer(01,itype,ai_phase) = p_pcg8_b_c_a01 + if (p_pcg9_b_c_a01 .ge. p1st) lptr_pcg9_b_c_aer(01,itype,ai_phase) = p_pcg9_b_c_a01 + if (p_pcg1_b_o_a01 .ge. p1st) lptr_pcg1_b_o_aer(01,itype,ai_phase) = p_pcg1_b_o_a01 + if (p_pcg2_b_o_a01 .ge. p1st) lptr_pcg2_b_o_aer(01,itype,ai_phase) = p_pcg2_b_o_a01 + if (p_pcg3_b_o_a01 .ge. p1st) lptr_pcg3_b_o_aer(01,itype,ai_phase) = p_pcg3_b_o_a01 + if (p_pcg4_b_o_a01 .ge. p1st) lptr_pcg4_b_o_aer(01,itype,ai_phase) = p_pcg4_b_o_a01 + if (p_pcg5_b_o_a01 .ge. p1st) lptr_pcg5_b_o_aer(01,itype,ai_phase) = p_pcg5_b_o_a01 + if (p_pcg6_b_o_a01 .ge. p1st) lptr_pcg6_b_o_aer(01,itype,ai_phase) = p_pcg6_b_o_a01 + if (p_pcg7_b_o_a01 .ge. p1st) lptr_pcg7_b_o_aer(01,itype,ai_phase) = p_pcg7_b_o_a01 + if (p_pcg8_b_o_a01 .ge. p1st) lptr_pcg8_b_o_aer(01,itype,ai_phase) = p_pcg8_b_o_a01 + if (p_pcg9_b_o_a01 .ge. p1st) lptr_pcg9_b_o_aer(01,itype,ai_phase) = p_pcg9_b_o_a01 + if (p_opcg1_b_c_a01 .ge. p1st) lptr_opcg1_b_c_aer(01,itype,ai_phase) = p_opcg1_b_c_a01 + if (p_opcg2_b_c_a01 .ge. p1st) lptr_opcg2_b_c_aer(01,itype,ai_phase) = p_opcg2_b_c_a01 + if (p_opcg3_b_c_a01 .ge. p1st) lptr_opcg3_b_c_aer(01,itype,ai_phase) = p_opcg3_b_c_a01 + if (p_opcg4_b_c_a01 .ge. p1st) lptr_opcg4_b_c_aer(01,itype,ai_phase) = p_opcg4_b_c_a01 + if (p_opcg5_b_c_a01 .ge. p1st) lptr_opcg5_b_c_aer(01,itype,ai_phase) = p_opcg5_b_c_a01 + if (p_opcg6_b_c_a01 .ge. p1st) lptr_opcg6_b_c_aer(01,itype,ai_phase) = p_opcg6_b_c_a01 + if (p_opcg7_b_c_a01 .ge. p1st) lptr_opcg7_b_c_aer(01,itype,ai_phase) = p_opcg7_b_c_a01 + if (p_opcg8_b_c_a01 .ge. p1st) lptr_opcg8_b_c_aer(01,itype,ai_phase) = p_opcg8_b_c_a01 + if (p_opcg1_b_o_a01 .ge. p1st) lptr_opcg1_b_o_aer(01,itype,ai_phase) = p_opcg1_b_o_a01 + if (p_opcg2_b_o_a01 .ge. p1st) lptr_opcg2_b_o_aer(01,itype,ai_phase) = p_opcg2_b_o_a01 + if (p_opcg3_b_o_a01 .ge. p1st) lptr_opcg3_b_o_aer(01,itype,ai_phase) = p_opcg3_b_o_a01 + if (p_opcg4_b_o_a01 .ge. p1st) lptr_opcg4_b_o_aer(01,itype,ai_phase) = p_opcg4_b_o_a01 + if (p_opcg5_b_o_a01 .ge. p1st) lptr_opcg5_b_o_aer(01,itype,ai_phase) = p_opcg5_b_o_a01 + if (p_opcg6_b_o_a01 .ge. p1st) lptr_opcg6_b_o_aer(01,itype,ai_phase) = p_opcg6_b_o_a01 + if (p_opcg7_b_o_a01 .ge. p1st) lptr_opcg7_b_o_aer(01,itype,ai_phase) = p_opcg7_b_o_a01 + if (p_opcg8_b_o_a01 .ge. p1st) lptr_opcg8_b_o_aer(01,itype,ai_phase) = p_opcg8_b_o_a01 + if (p_pcg1_f_c_a01 .ge. p1st) lptr_pcg1_f_c_aer(01,itype,ai_phase) = p_pcg1_f_c_a01 + if (p_pcg2_f_c_a01 .ge. p1st) lptr_pcg2_f_c_aer(01,itype,ai_phase) = p_pcg2_f_c_a01 + if (p_pcg3_f_c_a01 .ge. p1st) lptr_pcg3_f_c_aer(01,itype,ai_phase) = p_pcg3_f_c_a01 + if (p_pcg4_f_c_a01 .ge. p1st) lptr_pcg4_f_c_aer(01,itype,ai_phase) = p_pcg4_f_c_a01 + if (p_pcg5_f_c_a01 .ge. p1st) lptr_pcg5_f_c_aer(01,itype,ai_phase) = p_pcg5_f_c_a01 + if (p_pcg6_f_c_a01 .ge. p1st) lptr_pcg6_f_c_aer(01,itype,ai_phase) = p_pcg6_f_c_a01 + if (p_pcg7_f_c_a01 .ge. p1st) lptr_pcg7_f_c_aer(01,itype,ai_phase) = p_pcg7_f_c_a01 + if (p_pcg8_f_c_a01 .ge. p1st) lptr_pcg8_f_c_aer(01,itype,ai_phase) = p_pcg8_f_c_a01 + if (p_pcg9_f_c_a01 .ge. p1st) lptr_pcg9_f_c_aer(01,itype,ai_phase) = p_pcg9_f_c_a01 + if (p_pcg1_f_o_a01 .ge. p1st) lptr_pcg1_f_o_aer(01,itype,ai_phase) = p_pcg1_f_o_a01 + if (p_pcg2_f_o_a01 .ge. p1st) lptr_pcg2_f_o_aer(01,itype,ai_phase) = p_pcg2_f_o_a01 + if (p_pcg3_f_o_a01 .ge. p1st) lptr_pcg3_f_o_aer(01,itype,ai_phase) = p_pcg3_f_o_a01 + if (p_pcg4_f_o_a01 .ge. p1st) lptr_pcg4_f_o_aer(01,itype,ai_phase) = p_pcg4_f_o_a01 + if (p_pcg5_f_o_a01 .ge. p1st) lptr_pcg5_f_o_aer(01,itype,ai_phase) = p_pcg5_f_o_a01 + if (p_pcg6_f_o_a01 .ge. p1st) lptr_pcg6_f_o_aer(01,itype,ai_phase) = p_pcg6_f_o_a01 + if (p_pcg7_f_o_a01 .ge. p1st) lptr_pcg7_f_o_aer(01,itype,ai_phase) = p_pcg7_f_o_a01 + if (p_pcg8_f_o_a01 .ge. p1st) lptr_pcg8_f_o_aer(01,itype,ai_phase) = p_pcg8_f_o_a01 + if (p_pcg9_f_o_a01 .ge. p1st) lptr_pcg9_f_o_aer(01,itype,ai_phase) = p_pcg9_f_o_a01 + if (p_opcg1_f_c_a01 .ge. p1st) lptr_opcg1_f_c_aer(01,itype,ai_phase) = p_opcg1_f_c_a01 + if (p_opcg2_f_c_a01 .ge. p1st) lptr_opcg2_f_c_aer(01,itype,ai_phase) = p_opcg2_f_c_a01 + if (p_opcg3_f_c_a01 .ge. p1st) lptr_opcg3_f_c_aer(01,itype,ai_phase) = p_opcg3_f_c_a01 + if (p_opcg4_f_c_a01 .ge. p1st) lptr_opcg4_f_c_aer(01,itype,ai_phase) = p_opcg4_f_c_a01 + if (p_opcg5_f_c_a01 .ge. p1st) lptr_opcg5_f_c_aer(01,itype,ai_phase) = p_opcg5_f_c_a01 + if (p_opcg6_f_c_a01 .ge. p1st) lptr_opcg6_f_c_aer(01,itype,ai_phase) = p_opcg6_f_c_a01 + if (p_opcg7_f_c_a01 .ge. p1st) lptr_opcg7_f_c_aer(01,itype,ai_phase) = p_opcg7_f_c_a01 + if (p_opcg8_f_c_a01 .ge. p1st) lptr_opcg8_f_c_aer(01,itype,ai_phase) = p_opcg8_f_c_a01 + if (p_opcg1_f_o_a01 .ge. p1st) lptr_opcg1_f_o_aer(01,itype,ai_phase) = p_opcg1_f_o_a01 + if (p_opcg2_f_o_a01 .ge. p1st) lptr_opcg2_f_o_aer(01,itype,ai_phase) = p_opcg2_f_o_a01 + if (p_opcg3_f_o_a01 .ge. p1st) lptr_opcg3_f_o_aer(01,itype,ai_phase) = p_opcg3_f_o_a01 + if (p_opcg4_f_o_a01 .ge. p1st) lptr_opcg4_f_o_aer(01,itype,ai_phase) = p_opcg4_f_o_a01 + if (p_opcg5_f_o_a01 .ge. p1st) lptr_opcg5_f_o_aer(01,itype,ai_phase) = p_opcg5_f_o_a01 + if (p_opcg6_f_o_a01 .ge. p1st) lptr_opcg6_f_o_aer(01,itype,ai_phase) = p_opcg6_f_o_a01 + if (p_opcg7_f_o_a01 .ge. p1st) lptr_opcg7_f_o_aer(01,itype,ai_phase) = p_opcg7_f_o_a01 + if (p_opcg8_f_o_a01 .ge. p1st) lptr_opcg8_f_o_aer(01,itype,ai_phase) = p_opcg8_f_o_a01 + if (p_ant1_c_a01 .ge. p1st) lptr_ant1_c_aer(01,itype,ai_phase) = p_ant1_c_a01 + if (p_ant2_c_a01 .ge. p1st) lptr_ant2_c_aer(01,itype,ai_phase) = p_ant2_c_a01 + if (p_ant3_c_a01 .ge. p1st) lptr_ant3_c_aer(01,itype,ai_phase) = p_ant3_c_a01 + if (p_ant4_c_a01 .ge. p1st) lptr_ant4_c_aer(01,itype,ai_phase) = p_ant4_c_a01 + if (p_ant1_o_a01 .ge. p1st) lptr_ant1_o_aer(01,itype,ai_phase) = p_ant1_o_a01 + if (p_ant2_o_a01 .ge. p1st) lptr_ant2_o_aer(01,itype,ai_phase) = p_ant2_o_a01 + if (p_ant3_o_a01 .ge. p1st) lptr_ant3_o_aer(01,itype,ai_phase) = p_ant3_o_a01 + if (p_ant4_o_a01 .ge. p1st) lptr_ant4_o_aer(01,itype,ai_phase) = p_ant4_o_a01 + if (p_biog1_c_a01 .ge. p1st) lptr_biog1_c_aer(01,itype,ai_phase) = p_biog1_c_a01 + if (p_biog2_c_a01 .ge. p1st) lptr_biog2_c_aer(01,itype,ai_phase) = p_biog2_c_a01 + if (p_biog3_c_a01 .ge. p1st) lptr_biog3_c_aer(01,itype,ai_phase) = p_biog3_c_a01 + if (p_biog4_c_a01 .ge. p1st) lptr_biog4_c_aer(01,itype,ai_phase) = p_biog4_c_a01 + if (p_biog1_o_a01 .ge. p1st) lptr_biog1_o_aer(01,itype,ai_phase) = p_biog1_o_a01 + if (p_biog2_o_a01 .ge. p1st) lptr_biog2_o_aer(01,itype,ai_phase) = p_biog2_o_a01 + if (p_biog3_o_a01 .ge. p1st) lptr_biog3_o_aer(01,itype,ai_phase) = p_biog3_o_a01 + if (p_biog4_o_a01 .ge. p1st) lptr_biog4_o_aer(01,itype,ai_phase) = p_biog4_o_a01 + if (p_num_a01 .ge. p1st) numptr_aer(01,itype,ai_phase) = p_num_a01 end if if (nsize_aer(itype) .ge. 2) then - lptr_so4_aer(02,itype,ai_phase) = p_so4_a02 - lptr_no3_aer(02,itype,ai_phase) = p_no3_a02 - lptr_cl_aer(02,itype,ai_phase) = p_cl_a02 - lptr_msa_aer(02,itype,ai_phase) = p_msa_a02 - lptr_co3_aer(02,itype,ai_phase) = p_co3_a02 - lptr_nh4_aer(02,itype,ai_phase) = p_nh4_a02 - lptr_na_aer(02,itype,ai_phase) = p_na_a02 - lptr_ca_aer(02,itype,ai_phase) = p_ca_a02 - lptr_oin_aer(02,itype,ai_phase) = p_oin_a02 - lptr_oc_aer(02,itype,ai_phase) = p_oc_a02 - lptr_bc_aer(02,itype,ai_phase) = p_bc_a02 - hyswptr_aer(02,itype) = p_hysw_a02 - waterptr_aer(02,itype) = p_water_a02 - numptr_aer(02,itype,ai_phase) = p_num_a02 - end if + if (p_so4_a02 .ge. p1st) lptr_so4_aer(02,itype,ai_phase) = p_so4_a02 + if (p_no3_a02 .ge. p1st) lptr_no3_aer(02,itype,ai_phase) = p_no3_a02 + if (p_cl_a02 .ge. p1st) lptr_cl_aer(02,itype,ai_phase) = p_cl_a02 + if (p_msa_a02 .ge. p1st) lptr_msa_aer(02,itype,ai_phase) = p_msa_a02 + if (p_co3_a02 .ge. p1st) lptr_co3_aer(02,itype,ai_phase) = p_co3_a02 + if (p_nh4_a02 .ge. p1st) lptr_nh4_aer(02,itype,ai_phase) = p_nh4_a02 + if (p_na_a02 .ge. p1st) lptr_na_aer(02,itype,ai_phase) = p_na_a02 + if (p_ca_a02 .ge. p1st) lptr_ca_aer(02,itype,ai_phase) = p_ca_a02 + if (p_oin_a02 .ge. p1st) lptr_oin_aer(02,itype,ai_phase) = p_oin_a02 + if (p_oc_a02 .ge. p1st) lptr_oc_aer(02,itype,ai_phase) = p_oc_a02 + if (p_bc_a02 .ge. p1st) lptr_bc_aer(02,itype,ai_phase) = p_bc_a02 + if (p_hysw_a02 .ge. p1st) hyswptr_aer(02,itype) = p_hysw_a02 + if (p_water_a02 .ge. p1st) waterptr_aer(02,itype) = p_water_a02 + if (p_pcg1_b_c_a02 .ge. p1st) lptr_pcg1_b_c_aer(02,itype,ai_phase) = p_pcg1_b_c_a02 + if (p_pcg2_b_c_a02 .ge. p1st) lptr_pcg2_b_c_aer(02,itype,ai_phase) = p_pcg2_b_c_a02 + if (p_pcg3_b_c_a02 .ge. p1st) lptr_pcg3_b_c_aer(02,itype,ai_phase) = p_pcg3_b_c_a02 + if (p_pcg4_b_c_a02 .ge. p1st) lptr_pcg4_b_c_aer(02,itype,ai_phase) = p_pcg4_b_c_a02 + if (p_pcg5_b_c_a02 .ge. p1st) lptr_pcg5_b_c_aer(02,itype,ai_phase) = p_pcg5_b_c_a02 + if (p_pcg6_b_c_a02 .ge. p1st) lptr_pcg6_b_c_aer(02,itype,ai_phase) = p_pcg6_b_c_a02 + if (p_pcg7_b_c_a02 .ge. p1st) lptr_pcg7_b_c_aer(02,itype,ai_phase) = p_pcg7_b_c_a02 + if (p_pcg8_b_c_a02 .ge. p1st) lptr_pcg8_b_c_aer(02,itype,ai_phase) = p_pcg8_b_c_a02 + if (p_pcg9_b_c_a02 .ge. p1st) lptr_pcg9_b_c_aer(02,itype,ai_phase) = p_pcg9_b_c_a02 + if (p_pcg1_b_o_a02 .ge. p1st) lptr_pcg1_b_o_aer(02,itype,ai_phase) = p_pcg1_b_o_a02 + if (p_pcg2_b_o_a02 .ge. p1st) lptr_pcg2_b_o_aer(02,itype,ai_phase) = p_pcg2_b_o_a02 + if (p_pcg3_b_o_a02 .ge. p1st) lptr_pcg3_b_o_aer(02,itype,ai_phase) = p_pcg3_b_o_a02 + if (p_pcg4_b_o_a02 .ge. p1st) lptr_pcg4_b_o_aer(02,itype,ai_phase) = p_pcg4_b_o_a02 + if (p_pcg5_b_o_a02 .ge. p1st) lptr_pcg5_b_o_aer(02,itype,ai_phase) = p_pcg5_b_o_a02 + if (p_pcg6_b_o_a02 .ge. p1st) lptr_pcg6_b_o_aer(02,itype,ai_phase) = p_pcg6_b_o_a02 + if (p_pcg7_b_o_a02 .ge. p1st) lptr_pcg7_b_o_aer(02,itype,ai_phase) = p_pcg7_b_o_a02 + if (p_pcg8_b_o_a02 .ge. p1st) lptr_pcg8_b_o_aer(02,itype,ai_phase) = p_pcg8_b_o_a02 + if (p_pcg9_b_o_a02 .ge. p1st) lptr_pcg9_b_o_aer(02,itype,ai_phase) = p_pcg9_b_o_a02 + if (p_opcg1_b_c_a02 .ge. p1st) lptr_opcg1_b_c_aer(02,itype,ai_phase) = p_opcg1_b_c_a02 + if (p_opcg2_b_c_a02 .ge. p1st) lptr_opcg2_b_c_aer(02,itype,ai_phase) = p_opcg2_b_c_a02 + if (p_opcg3_b_c_a02 .ge. p1st) lptr_opcg3_b_c_aer(02,itype,ai_phase) = p_opcg3_b_c_a02 + if (p_opcg4_b_c_a02 .ge. p1st) lptr_opcg4_b_c_aer(02,itype,ai_phase) = p_opcg4_b_c_a02 + if (p_opcg5_b_c_a02 .ge. p1st) lptr_opcg5_b_c_aer(02,itype,ai_phase) = p_opcg5_b_c_a02 + if (p_opcg6_b_c_a02 .ge. p1st) lptr_opcg6_b_c_aer(02,itype,ai_phase) = p_opcg6_b_c_a02 + if (p_opcg7_b_c_a02 .ge. p1st) lptr_opcg7_b_c_aer(02,itype,ai_phase) = p_opcg7_b_c_a02 + if (p_opcg8_b_c_a02 .ge. p1st) lptr_opcg8_b_c_aer(02,itype,ai_phase) = p_opcg8_b_c_a02 + if (p_opcg1_b_o_a02 .ge. p1st) lptr_opcg1_b_o_aer(02,itype,ai_phase) = p_opcg1_b_o_a02 + if (p_opcg2_b_o_a02 .ge. p1st) lptr_opcg2_b_o_aer(02,itype,ai_phase) = p_opcg2_b_o_a02 + if (p_opcg3_b_o_a02 .ge. p1st) lptr_opcg3_b_o_aer(02,itype,ai_phase) = p_opcg3_b_o_a02 + if (p_opcg4_b_o_a02 .ge. p1st) lptr_opcg4_b_o_aer(02,itype,ai_phase) = p_opcg4_b_o_a02 + if (p_opcg5_b_o_a02 .ge. p1st) lptr_opcg5_b_o_aer(02,itype,ai_phase) = p_opcg5_b_o_a02 + if (p_opcg6_b_o_a02 .ge. p1st) lptr_opcg6_b_o_aer(02,itype,ai_phase) = p_opcg6_b_o_a02 + if (p_opcg7_b_o_a02 .ge. p1st) lptr_opcg7_b_o_aer(02,itype,ai_phase) = p_opcg7_b_o_a02 + if (p_opcg8_b_o_a02 .ge. p1st) lptr_opcg8_b_o_aer(02,itype,ai_phase) = p_opcg8_b_o_a02 + if (p_pcg1_f_c_a02 .ge. p1st) lptr_pcg1_f_c_aer(02,itype,ai_phase) = p_pcg1_f_c_a02 + if (p_pcg2_f_c_a02 .ge. p1st) lptr_pcg2_f_c_aer(02,itype,ai_phase) = p_pcg2_f_c_a02 + if (p_pcg3_f_c_a02 .ge. p1st) lptr_pcg3_f_c_aer(02,itype,ai_phase) = p_pcg3_f_c_a02 + if (p_pcg4_f_c_a02 .ge. p1st) lptr_pcg4_f_c_aer(02,itype,ai_phase) = p_pcg4_f_c_a02 + if (p_pcg5_f_c_a02 .ge. p1st) lptr_pcg5_f_c_aer(02,itype,ai_phase) = p_pcg5_f_c_a02 + if (p_pcg6_f_c_a02 .ge. p1st) lptr_pcg6_f_c_aer(02,itype,ai_phase) = p_pcg6_f_c_a02 + if (p_pcg7_f_c_a02 .ge. p1st) lptr_pcg7_f_c_aer(02,itype,ai_phase) = p_pcg7_f_c_a02 + if (p_pcg8_f_c_a02 .ge. p1st) lptr_pcg8_f_c_aer(02,itype,ai_phase) = p_pcg8_f_c_a02 + if (p_pcg9_f_c_a02 .ge. p1st) lptr_pcg9_f_c_aer(02,itype,ai_phase) = p_pcg9_f_c_a02 + if (p_pcg1_f_o_a02 .ge. p1st) lptr_pcg1_f_o_aer(02,itype,ai_phase) = p_pcg1_f_o_a02 + if (p_pcg2_f_o_a02 .ge. p1st) lptr_pcg2_f_o_aer(02,itype,ai_phase) = p_pcg2_f_o_a02 + if (p_pcg3_f_o_a02 .ge. p1st) lptr_pcg3_f_o_aer(02,itype,ai_phase) = p_pcg3_f_o_a02 + if (p_pcg4_f_o_a02 .ge. p1st) lptr_pcg4_f_o_aer(02,itype,ai_phase) = p_pcg4_f_o_a02 + if (p_pcg5_f_o_a02 .ge. p1st) lptr_pcg5_f_o_aer(02,itype,ai_phase) = p_pcg5_f_o_a02 + if (p_pcg6_f_o_a02 .ge. p1st) lptr_pcg6_f_o_aer(02,itype,ai_phase) = p_pcg6_f_o_a02 + if (p_pcg7_f_o_a02 .ge. p1st) lptr_pcg7_f_o_aer(02,itype,ai_phase) = p_pcg7_f_o_a02 + if (p_pcg8_f_o_a02 .ge. p1st) lptr_pcg8_f_o_aer(02,itype,ai_phase) = p_pcg8_f_o_a02 + if (p_pcg9_f_o_a02 .ge. p1st) lptr_pcg9_f_o_aer(02,itype,ai_phase) = p_pcg9_f_o_a02 + if (p_opcg1_f_c_a02 .ge. p1st) lptr_opcg1_f_c_aer(02,itype,ai_phase) = p_opcg1_f_c_a02 + if (p_opcg2_f_c_a02 .ge. p1st) lptr_opcg2_f_c_aer(02,itype,ai_phase) = p_opcg2_f_c_a02 + if (p_opcg3_f_c_a02 .ge. p1st) lptr_opcg3_f_c_aer(02,itype,ai_phase) = p_opcg3_f_c_a02 + if (p_opcg4_f_c_a02 .ge. p1st) lptr_opcg4_f_c_aer(02,itype,ai_phase) = p_opcg4_f_c_a02 + if (p_opcg5_f_c_a02 .ge. p1st) lptr_opcg5_f_c_aer(02,itype,ai_phase) = p_opcg5_f_c_a02 + if (p_opcg6_f_c_a02 .ge. p1st) lptr_opcg6_f_c_aer(02,itype,ai_phase) = p_opcg6_f_c_a02 + if (p_opcg7_f_c_a02 .ge. p1st) lptr_opcg7_f_c_aer(02,itype,ai_phase) = p_opcg7_f_c_a02 + if (p_opcg8_f_c_a02 .ge. p1st) lptr_opcg8_f_c_aer(02,itype,ai_phase) = p_opcg8_f_c_a02 + if (p_opcg1_f_o_a02 .ge. p1st) lptr_opcg1_f_o_aer(02,itype,ai_phase) = p_opcg1_f_o_a02 + if (p_opcg2_f_o_a02 .ge. p1st) lptr_opcg2_f_o_aer(02,itype,ai_phase) = p_opcg2_f_o_a02 + if (p_opcg3_f_o_a02 .ge. p1st) lptr_opcg3_f_o_aer(02,itype,ai_phase) = p_opcg3_f_o_a02 + if (p_opcg4_f_o_a02 .ge. p1st) lptr_opcg4_f_o_aer(02,itype,ai_phase) = p_opcg4_f_o_a02 + if (p_opcg5_f_o_a02 .ge. p1st) lptr_opcg5_f_o_aer(02,itype,ai_phase) = p_opcg5_f_o_a02 + if (p_opcg6_f_o_a02 .ge. p1st) lptr_opcg6_f_o_aer(02,itype,ai_phase) = p_opcg6_f_o_a02 + if (p_opcg7_f_o_a02 .ge. p1st) lptr_opcg7_f_o_aer(02,itype,ai_phase) = p_opcg7_f_o_a02 + if (p_opcg8_f_o_a02 .ge. p1st) lptr_opcg8_f_o_aer(02,itype,ai_phase) = p_opcg8_f_o_a02 + if (p_ant1_c_a02 .ge. p1st) lptr_ant1_c_aer(02,itype,ai_phase) = p_ant1_c_a02 + if (p_ant2_c_a02 .ge. p1st) lptr_ant2_c_aer(02,itype,ai_phase) = p_ant2_c_a02 + if (p_ant3_c_a02 .ge. p1st) lptr_ant3_c_aer(02,itype,ai_phase) = p_ant3_c_a02 + if (p_ant4_c_a02 .ge. p1st) lptr_ant4_c_aer(02,itype,ai_phase) = p_ant4_c_a02 + if (p_ant1_o_a02 .ge. p1st) lptr_ant1_o_aer(02,itype,ai_phase) = p_ant1_o_a02 + if (p_ant2_o_a02 .ge. p1st) lptr_ant2_o_aer(02,itype,ai_phase) = p_ant2_o_a02 + if (p_ant3_o_a02 .ge. p1st) lptr_ant3_o_aer(02,itype,ai_phase) = p_ant3_o_a02 + if (p_ant4_o_a02 .ge. p1st) lptr_ant4_o_aer(02,itype,ai_phase) = p_ant4_o_a02 + if (p_biog1_c_a02 .ge. p1st) lptr_biog1_c_aer(02,itype,ai_phase) = p_biog1_c_a02 + if (p_biog2_c_a02 .ge. p1st) lptr_biog2_c_aer(02,itype,ai_phase) = p_biog2_c_a02 + if (p_biog3_c_a02 .ge. p1st) lptr_biog3_c_aer(02,itype,ai_phase) = p_biog3_c_a02 + if (p_biog4_c_a02 .ge. p1st) lptr_biog4_c_aer(02,itype,ai_phase) = p_biog4_c_a02 + if (p_biog1_o_a02 .ge. p1st) lptr_biog1_o_aer(02,itype,ai_phase) = p_biog1_o_a02 + if (p_biog2_o_a02 .ge. p1st) lptr_biog2_o_aer(02,itype,ai_phase) = p_biog2_o_a02 + if (p_biog3_o_a02 .ge. p1st) lptr_biog3_o_aer(02,itype,ai_phase) = p_biog3_o_a02 + if (p_biog4_o_a02 .ge. p1st) lptr_biog4_o_aer(02,itype,ai_phase) = p_biog4_o_a02 + if (p_num_a02 .ge. p1st) numptr_aer(02,itype,ai_phase) = p_num_a02 + end if if (nsize_aer(itype) .ge. 3) then - lptr_so4_aer(03,itype,ai_phase) = p_so4_a03 - lptr_no3_aer(03,itype,ai_phase) = p_no3_a03 - lptr_cl_aer(03,itype,ai_phase) = p_cl_a03 - lptr_msa_aer(03,itype,ai_phase) = p_msa_a03 - lptr_co3_aer(03,itype,ai_phase) = p_co3_a03 - lptr_nh4_aer(03,itype,ai_phase) = p_nh4_a03 - lptr_na_aer(03,itype,ai_phase) = p_na_a03 - lptr_ca_aer(03,itype,ai_phase) = p_ca_a03 - lptr_oin_aer(03,itype,ai_phase) = p_oin_a03 - lptr_oc_aer(03,itype,ai_phase) = p_oc_a03 - lptr_bc_aer(03,itype,ai_phase) = p_bc_a03 - hyswptr_aer(03,itype) = p_hysw_a03 - waterptr_aer(03,itype) = p_water_a03 - numptr_aer(03,itype,ai_phase) = p_num_a03 - end if + if (p_so4_a03 .ge. p1st) lptr_so4_aer(03,itype,ai_phase) = p_so4_a03 + if (p_no3_a03 .ge. p1st) lptr_no3_aer(03,itype,ai_phase) = p_no3_a03 + if (p_cl_a03 .ge. p1st) lptr_cl_aer(03,itype,ai_phase) = p_cl_a03 + if (p_msa_a03 .ge. p1st) lptr_msa_aer(03,itype,ai_phase) = p_msa_a03 + if (p_co3_a03 .ge. p1st) lptr_co3_aer(03,itype,ai_phase) = p_co3_a03 + if (p_nh4_a03 .ge. p1st) lptr_nh4_aer(03,itype,ai_phase) = p_nh4_a03 + if (p_na_a03 .ge. p1st) lptr_na_aer(03,itype,ai_phase) = p_na_a03 + if (p_ca_a03 .ge. p1st) lptr_ca_aer(03,itype,ai_phase) = p_ca_a03 + if (p_oin_a03 .ge. p1st) lptr_oin_aer(03,itype,ai_phase) = p_oin_a03 + if (p_oc_a03 .ge. p1st) lptr_oc_aer(03,itype,ai_phase) = p_oc_a03 + if (p_bc_a03 .ge. p1st) lptr_bc_aer(03,itype,ai_phase) = p_bc_a03 + if (p_hysw_a03 .ge. p1st) hyswptr_aer(03,itype) = p_hysw_a03 + if (p_water_a03 .ge. p1st) waterptr_aer(03,itype) = p_water_a03 + if (p_pcg1_b_c_a03 .ge. p1st) lptr_pcg1_b_c_aer(03,itype,ai_phase) = p_pcg1_b_c_a03 + if (p_pcg2_b_c_a03 .ge. p1st) lptr_pcg2_b_c_aer(03,itype,ai_phase) = p_pcg2_b_c_a03 + if (p_pcg3_b_c_a03 .ge. p1st) lptr_pcg3_b_c_aer(03,itype,ai_phase) = p_pcg3_b_c_a03 + if (p_pcg4_b_c_a03 .ge. p1st) lptr_pcg4_b_c_aer(03,itype,ai_phase) = p_pcg4_b_c_a03 + if (p_pcg5_b_c_a03 .ge. p1st) lptr_pcg5_b_c_aer(03,itype,ai_phase) = p_pcg5_b_c_a03 + if (p_pcg6_b_c_a03 .ge. p1st) lptr_pcg6_b_c_aer(03,itype,ai_phase) = p_pcg6_b_c_a03 + if (p_pcg7_b_c_a03 .ge. p1st) lptr_pcg7_b_c_aer(03,itype,ai_phase) = p_pcg7_b_c_a03 + if (p_pcg8_b_c_a03 .ge. p1st) lptr_pcg8_b_c_aer(03,itype,ai_phase) = p_pcg8_b_c_a03 + if (p_pcg9_b_c_a03 .ge. p1st) lptr_pcg9_b_c_aer(03,itype,ai_phase) = p_pcg9_b_c_a03 + if (p_pcg1_b_o_a03 .ge. p1st) lptr_pcg1_b_o_aer(03,itype,ai_phase) = p_pcg1_b_o_a03 + if (p_pcg2_b_o_a03 .ge. p1st) lptr_pcg2_b_o_aer(03,itype,ai_phase) = p_pcg2_b_o_a03 + if (p_pcg3_b_o_a03 .ge. p1st) lptr_pcg3_b_o_aer(03,itype,ai_phase) = p_pcg3_b_o_a03 + if (p_pcg4_b_o_a03 .ge. p1st) lptr_pcg4_b_o_aer(03,itype,ai_phase) = p_pcg4_b_o_a03 + if (p_pcg5_b_o_a03 .ge. p1st) lptr_pcg5_b_o_aer(03,itype,ai_phase) = p_pcg5_b_o_a03 + if (p_pcg6_b_o_a03 .ge. p1st) lptr_pcg6_b_o_aer(03,itype,ai_phase) = p_pcg6_b_o_a03 + if (p_pcg7_b_o_a03 .ge. p1st) lptr_pcg7_b_o_aer(03,itype,ai_phase) = p_pcg7_b_o_a03 + if (p_pcg8_b_o_a03 .ge. p1st) lptr_pcg8_b_o_aer(03,itype,ai_phase) = p_pcg8_b_o_a03 + if (p_pcg9_b_o_a03 .ge. p1st) lptr_pcg9_b_o_aer(03,itype,ai_phase) = p_pcg9_b_o_a03 + if (p_opcg1_b_c_a03 .ge. p1st) lptr_opcg1_b_c_aer(03,itype,ai_phase) = p_opcg1_b_c_a03 + if (p_opcg2_b_c_a03 .ge. p1st) lptr_opcg2_b_c_aer(03,itype,ai_phase) = p_opcg2_b_c_a03 + if (p_opcg3_b_c_a03 .ge. p1st) lptr_opcg3_b_c_aer(03,itype,ai_phase) = p_opcg3_b_c_a03 + if (p_opcg4_b_c_a03 .ge. p1st) lptr_opcg4_b_c_aer(03,itype,ai_phase) = p_opcg4_b_c_a03 + if (p_opcg5_b_c_a03 .ge. p1st) lptr_opcg5_b_c_aer(03,itype,ai_phase) = p_opcg5_b_c_a03 + if (p_opcg6_b_c_a03 .ge. p1st) lptr_opcg6_b_c_aer(03,itype,ai_phase) = p_opcg6_b_c_a03 + if (p_opcg7_b_c_a03 .ge. p1st) lptr_opcg7_b_c_aer(03,itype,ai_phase) = p_opcg7_b_c_a03 + if (p_opcg8_b_c_a03 .ge. p1st) lptr_opcg8_b_c_aer(03,itype,ai_phase) = p_opcg8_b_c_a03 + if (p_opcg1_b_o_a03 .ge. p1st) lptr_opcg1_b_o_aer(03,itype,ai_phase) = p_opcg1_b_o_a03 + if (p_opcg2_b_o_a03 .ge. p1st) lptr_opcg2_b_o_aer(03,itype,ai_phase) = p_opcg2_b_o_a03 + if (p_opcg3_b_o_a03 .ge. p1st) lptr_opcg3_b_o_aer(03,itype,ai_phase) = p_opcg3_b_o_a03 + if (p_opcg4_b_o_a03 .ge. p1st) lptr_opcg4_b_o_aer(03,itype,ai_phase) = p_opcg4_b_o_a03 + if (p_opcg5_b_o_a03 .ge. p1st) lptr_opcg5_b_o_aer(03,itype,ai_phase) = p_opcg5_b_o_a03 + if (p_opcg6_b_o_a03 .ge. p1st) lptr_opcg6_b_o_aer(03,itype,ai_phase) = p_opcg6_b_o_a03 + if (p_opcg7_b_o_a03 .ge. p1st) lptr_opcg7_b_o_aer(03,itype,ai_phase) = p_opcg7_b_o_a03 + if (p_opcg8_b_o_a03 .ge. p1st) lptr_opcg8_b_o_aer(03,itype,ai_phase) = p_opcg8_b_o_a03 + if (p_pcg1_f_c_a03 .ge. p1st) lptr_pcg1_f_c_aer(03,itype,ai_phase) = p_pcg1_f_c_a03 + if (p_pcg2_f_c_a03 .ge. p1st) lptr_pcg2_f_c_aer(03,itype,ai_phase) = p_pcg2_f_c_a03 + if (p_pcg3_f_c_a03 .ge. p1st) lptr_pcg3_f_c_aer(03,itype,ai_phase) = p_pcg3_f_c_a03 + if (p_pcg4_f_c_a03 .ge. p1st) lptr_pcg4_f_c_aer(03,itype,ai_phase) = p_pcg4_f_c_a03 + if (p_pcg5_f_c_a03 .ge. p1st) lptr_pcg5_f_c_aer(03,itype,ai_phase) = p_pcg5_f_c_a03 + if (p_pcg6_f_c_a03 .ge. p1st) lptr_pcg6_f_c_aer(03,itype,ai_phase) = p_pcg6_f_c_a03 + if (p_pcg7_f_c_a03 .ge. p1st) lptr_pcg7_f_c_aer(03,itype,ai_phase) = p_pcg7_f_c_a03 + if (p_pcg8_f_c_a03 .ge. p1st) lptr_pcg8_f_c_aer(03,itype,ai_phase) = p_pcg8_f_c_a03 + if (p_pcg9_f_c_a03 .ge. p1st) lptr_pcg9_f_c_aer(03,itype,ai_phase) = p_pcg9_f_c_a03 + if (p_pcg1_f_o_a03 .ge. p1st) lptr_pcg1_f_o_aer(03,itype,ai_phase) = p_pcg1_f_o_a03 + if (p_pcg2_f_o_a03 .ge. p1st) lptr_pcg2_f_o_aer(03,itype,ai_phase) = p_pcg2_f_o_a03 + if (p_pcg3_f_o_a03 .ge. p1st) lptr_pcg3_f_o_aer(03,itype,ai_phase) = p_pcg3_f_o_a03 + if (p_pcg4_f_o_a03 .ge. p1st) lptr_pcg4_f_o_aer(03,itype,ai_phase) = p_pcg4_f_o_a03 + if (p_pcg5_f_o_a03 .ge. p1st) lptr_pcg5_f_o_aer(03,itype,ai_phase) = p_pcg5_f_o_a03 + if (p_pcg6_f_o_a03 .ge. p1st) lptr_pcg6_f_o_aer(03,itype,ai_phase) = p_pcg6_f_o_a03 + if (p_pcg7_f_o_a03 .ge. p1st) lptr_pcg7_f_o_aer(03,itype,ai_phase) = p_pcg7_f_o_a03 + if (p_pcg8_f_o_a03 .ge. p1st) lptr_pcg8_f_o_aer(03,itype,ai_phase) = p_pcg8_f_o_a03 + if (p_pcg9_f_o_a03 .ge. p1st) lptr_pcg9_f_o_aer(03,itype,ai_phase) = p_pcg9_f_o_a03 + if (p_opcg1_f_c_a03 .ge. p1st) lptr_opcg1_f_c_aer(03,itype,ai_phase) = p_opcg1_f_c_a03 + if (p_opcg2_f_c_a03 .ge. p1st) lptr_opcg2_f_c_aer(03,itype,ai_phase) = p_opcg2_f_c_a03 + if (p_opcg3_f_c_a03 .ge. p1st) lptr_opcg3_f_c_aer(03,itype,ai_phase) = p_opcg3_f_c_a03 + if (p_opcg4_f_c_a03 .ge. p1st) lptr_opcg4_f_c_aer(03,itype,ai_phase) = p_opcg4_f_c_a03 + if (p_opcg5_f_c_a03 .ge. p1st) lptr_opcg5_f_c_aer(03,itype,ai_phase) = p_opcg5_f_c_a03 + if (p_opcg6_f_c_a03 .ge. p1st) lptr_opcg6_f_c_aer(03,itype,ai_phase) = p_opcg6_f_c_a03 + if (p_opcg7_f_c_a03 .ge. p1st) lptr_opcg7_f_c_aer(03,itype,ai_phase) = p_opcg7_f_c_a03 + if (p_opcg8_f_c_a03 .ge. p1st) lptr_opcg8_f_c_aer(03,itype,ai_phase) = p_opcg8_f_c_a03 + if (p_opcg1_f_o_a03 .ge. p1st) lptr_opcg1_f_o_aer(03,itype,ai_phase) = p_opcg1_f_o_a03 + if (p_opcg2_f_o_a03 .ge. p1st) lptr_opcg2_f_o_aer(03,itype,ai_phase) = p_opcg2_f_o_a03 + if (p_opcg3_f_o_a03 .ge. p1st) lptr_opcg3_f_o_aer(03,itype,ai_phase) = p_opcg3_f_o_a03 + if (p_opcg4_f_o_a03 .ge. p1st) lptr_opcg4_f_o_aer(03,itype,ai_phase) = p_opcg4_f_o_a03 + if (p_opcg5_f_o_a03 .ge. p1st) lptr_opcg5_f_o_aer(03,itype,ai_phase) = p_opcg5_f_o_a03 + if (p_opcg6_f_o_a03 .ge. p1st) lptr_opcg6_f_o_aer(03,itype,ai_phase) = p_opcg6_f_o_a03 + if (p_opcg7_f_o_a03 .ge. p1st) lptr_opcg7_f_o_aer(03,itype,ai_phase) = p_opcg7_f_o_a03 + if (p_opcg8_f_o_a03 .ge. p1st) lptr_opcg8_f_o_aer(03,itype,ai_phase) = p_opcg8_f_o_a03 + if (p_ant1_c_a03 .ge. p1st) lptr_ant1_c_aer(03,itype,ai_phase) = p_ant1_c_a03 + if (p_ant2_c_a03 .ge. p1st) lptr_ant2_c_aer(03,itype,ai_phase) = p_ant2_c_a03 + if (p_ant3_c_a03 .ge. p1st) lptr_ant3_c_aer(03,itype,ai_phase) = p_ant3_c_a03 + if (p_ant4_c_a03 .ge. p1st) lptr_ant4_c_aer(03,itype,ai_phase) = p_ant4_c_a03 + if (p_ant1_o_a03 .ge. p1st) lptr_ant1_o_aer(03,itype,ai_phase) = p_ant1_o_a03 + if (p_ant2_o_a03 .ge. p1st) lptr_ant2_o_aer(03,itype,ai_phase) = p_ant2_o_a03 + if (p_ant3_o_a03 .ge. p1st) lptr_ant3_o_aer(03,itype,ai_phase) = p_ant3_o_a03 + if (p_ant4_o_a03 .ge. p1st) lptr_ant4_o_aer(03,itype,ai_phase) = p_ant4_o_a03 + if (p_biog1_c_a03 .ge. p1st) lptr_biog1_c_aer(03,itype,ai_phase) = p_biog1_c_a03 + if (p_biog2_c_a03 .ge. p1st) lptr_biog2_c_aer(03,itype,ai_phase) = p_biog2_c_a03 + if (p_biog3_c_a03 .ge. p1st) lptr_biog3_c_aer(03,itype,ai_phase) = p_biog3_c_a03 + if (p_biog4_c_a03 .ge. p1st) lptr_biog4_c_aer(03,itype,ai_phase) = p_biog4_c_a03 + if (p_biog1_o_a03 .ge. p1st) lptr_biog1_o_aer(03,itype,ai_phase) = p_biog1_o_a03 + if (p_biog2_o_a03 .ge. p1st) lptr_biog2_o_aer(03,itype,ai_phase) = p_biog2_o_a03 + if (p_biog3_o_a03 .ge. p1st) lptr_biog3_o_aer(03,itype,ai_phase) = p_biog3_o_a03 + if (p_biog4_o_a03 .ge. p1st) lptr_biog4_o_aer(03,itype,ai_phase) = p_biog4_o_a03 + if (p_num_a03 .ge. p1st) numptr_aer(03,itype,ai_phase) = p_num_a03 + end if + if (nsize_aer(itype) .ge. 4) then - lptr_so4_aer(04,itype,ai_phase) = p_so4_a04 - lptr_no3_aer(04,itype,ai_phase) = p_no3_a04 - lptr_cl_aer(04,itype,ai_phase) = p_cl_a04 - lptr_msa_aer(04,itype,ai_phase) = p_msa_a04 - lptr_co3_aer(04,itype,ai_phase) = p_co3_a04 - lptr_nh4_aer(04,itype,ai_phase) = p_nh4_a04 - lptr_na_aer(04,itype,ai_phase) = p_na_a04 - lptr_ca_aer(04,itype,ai_phase) = p_ca_a04 - lptr_oin_aer(04,itype,ai_phase) = p_oin_a04 - lptr_oc_aer(04,itype,ai_phase) = p_oc_a04 - lptr_bc_aer(04,itype,ai_phase) = p_bc_a04 - hyswptr_aer(04,itype) = p_hysw_a04 - waterptr_aer(04,itype) = p_water_a04 - numptr_aer(04,itype,ai_phase) = p_num_a04 - end if + if (p_so4_a04 .ge. p1st) lptr_so4_aer(04,itype,ai_phase) = p_so4_a04 + if (p_no3_a04 .ge. p1st) lptr_no3_aer(04,itype,ai_phase) = p_no3_a04 + if (p_cl_a04 .ge. p1st) lptr_cl_aer(04,itype,ai_phase) = p_cl_a04 + if (p_msa_a04 .ge. p1st) lptr_msa_aer(04,itype,ai_phase) = p_msa_a04 + if (p_co3_a04 .ge. p1st) lptr_co3_aer(04,itype,ai_phase) = p_co3_a04 + if (p_nh4_a04 .ge. p1st) lptr_nh4_aer(04,itype,ai_phase) = p_nh4_a04 + if (p_na_a04 .ge. p1st) lptr_na_aer(04,itype,ai_phase) = p_na_a04 + if (p_ca_a04 .ge. p1st) lptr_ca_aer(04,itype,ai_phase) = p_ca_a04 + if (p_oin_a04 .ge. p1st) lptr_oin_aer(04,itype,ai_phase) = p_oin_a04 + if (p_oc_a04 .ge. p1st) lptr_oc_aer(04,itype,ai_phase) = p_oc_a04 + if (p_bc_a04 .ge. p1st) lptr_bc_aer(04,itype,ai_phase) = p_bc_a04 + if (p_hysw_a04 .ge. p1st) hyswptr_aer(04,itype) = p_hysw_a04 + if (p_water_a04 .ge. p1st) waterptr_aer(04,itype) = p_water_a04 + if (p_pcg1_b_c_a04 .ge. p1st) lptr_pcg1_b_c_aer(04,itype,ai_phase) = p_pcg1_b_c_a04 + if (p_pcg2_b_c_a04 .ge. p1st) lptr_pcg2_b_c_aer(04,itype,ai_phase) = p_pcg2_b_c_a04 + if (p_pcg3_b_c_a04 .ge. p1st) lptr_pcg3_b_c_aer(04,itype,ai_phase) = p_pcg3_b_c_a04 + if (p_pcg4_b_c_a04 .ge. p1st) lptr_pcg4_b_c_aer(04,itype,ai_phase) = p_pcg4_b_c_a04 + if (p_pcg5_b_c_a04 .ge. p1st) lptr_pcg5_b_c_aer(04,itype,ai_phase) = p_pcg5_b_c_a04 + if (p_pcg6_b_c_a04 .ge. p1st) lptr_pcg6_b_c_aer(04,itype,ai_phase) = p_pcg6_b_c_a04 + if (p_pcg7_b_c_a04 .ge. p1st) lptr_pcg7_b_c_aer(04,itype,ai_phase) = p_pcg7_b_c_a04 + if (p_pcg8_b_c_a04 .ge. p1st) lptr_pcg8_b_c_aer(04,itype,ai_phase) = p_pcg8_b_c_a04 + if (p_pcg9_b_c_a04 .ge. p1st) lptr_pcg9_b_c_aer(04,itype,ai_phase) = p_pcg9_b_c_a04 + if (p_pcg1_b_o_a04 .ge. p1st) lptr_pcg1_b_o_aer(04,itype,ai_phase) = p_pcg1_b_o_a04 + if (p_pcg2_b_o_a04 .ge. p1st) lptr_pcg2_b_o_aer(04,itype,ai_phase) = p_pcg2_b_o_a04 + if (p_pcg3_b_o_a04 .ge. p1st) lptr_pcg3_b_o_aer(04,itype,ai_phase) = p_pcg3_b_o_a04 + if (p_pcg4_b_o_a04 .ge. p1st) lptr_pcg4_b_o_aer(04,itype,ai_phase) = p_pcg4_b_o_a04 + if (p_pcg5_b_o_a04 .ge. p1st) lptr_pcg5_b_o_aer(04,itype,ai_phase) = p_pcg5_b_o_a04 + if (p_pcg6_b_o_a04 .ge. p1st) lptr_pcg6_b_o_aer(04,itype,ai_phase) = p_pcg6_b_o_a04 + if (p_pcg7_b_o_a04 .ge. p1st) lptr_pcg7_b_o_aer(04,itype,ai_phase) = p_pcg7_b_o_a04 + if (p_pcg8_b_o_a04 .ge. p1st) lptr_pcg8_b_o_aer(04,itype,ai_phase) = p_pcg8_b_o_a04 + if (p_pcg9_b_o_a04 .ge. p1st) lptr_pcg9_b_o_aer(04,itype,ai_phase) = p_pcg9_b_o_a04 + if (p_opcg1_b_c_a04 .ge. p1st) lptr_opcg1_b_c_aer(04,itype,ai_phase) = p_opcg1_b_c_a04 + if (p_opcg2_b_c_a04 .ge. p1st) lptr_opcg2_b_c_aer(04,itype,ai_phase) = p_opcg2_b_c_a04 + if (p_opcg3_b_c_a04 .ge. p1st) lptr_opcg3_b_c_aer(04,itype,ai_phase) = p_opcg3_b_c_a04 + if (p_opcg4_b_c_a04 .ge. p1st) lptr_opcg4_b_c_aer(04,itype,ai_phase) = p_opcg4_b_c_a04 + if (p_opcg5_b_c_a04 .ge. p1st) lptr_opcg5_b_c_aer(04,itype,ai_phase) = p_opcg5_b_c_a04 + if (p_opcg6_b_c_a04 .ge. p1st) lptr_opcg6_b_c_aer(04,itype,ai_phase) = p_opcg6_b_c_a04 + if (p_opcg7_b_c_a04 .ge. p1st) lptr_opcg7_b_c_aer(04,itype,ai_phase) = p_opcg7_b_c_a04 + if (p_opcg8_b_c_a04 .ge. p1st) lptr_opcg8_b_c_aer(04,itype,ai_phase) = p_opcg8_b_c_a04 + if (p_opcg1_b_o_a04 .ge. p1st) lptr_opcg1_b_o_aer(04,itype,ai_phase) = p_opcg1_b_o_a04 + if (p_opcg2_b_o_a04 .ge. p1st) lptr_opcg2_b_o_aer(04,itype,ai_phase) = p_opcg2_b_o_a04 + if (p_opcg3_b_o_a04 .ge. p1st) lptr_opcg3_b_o_aer(04,itype,ai_phase) = p_opcg3_b_o_a04 + if (p_opcg4_b_o_a04 .ge. p1st) lptr_opcg4_b_o_aer(04,itype,ai_phase) = p_opcg4_b_o_a04 + if (p_opcg5_b_o_a04 .ge. p1st) lptr_opcg5_b_o_aer(04,itype,ai_phase) = p_opcg5_b_o_a04 + if (p_opcg6_b_o_a04 .ge. p1st) lptr_opcg6_b_o_aer(04,itype,ai_phase) = p_opcg6_b_o_a04 + if (p_opcg7_b_o_a04 .ge. p1st) lptr_opcg7_b_o_aer(04,itype,ai_phase) = p_opcg7_b_o_a04 + if (p_opcg8_b_o_a04 .ge. p1st) lptr_opcg8_b_o_aer(04,itype,ai_phase) = p_opcg8_b_o_a04 + if (p_pcg1_f_c_a04 .ge. p1st) lptr_pcg1_f_c_aer(04,itype,ai_phase) = p_pcg1_f_c_a04 + if (p_pcg2_f_c_a04 .ge. p1st) lptr_pcg2_f_c_aer(04,itype,ai_phase) = p_pcg2_f_c_a04 + if (p_pcg3_f_c_a04 .ge. p1st) lptr_pcg3_f_c_aer(04,itype,ai_phase) = p_pcg3_f_c_a04 + if (p_pcg4_f_c_a04 .ge. p1st) lptr_pcg4_f_c_aer(04,itype,ai_phase) = p_pcg4_f_c_a04 + if (p_pcg5_f_c_a04 .ge. p1st) lptr_pcg5_f_c_aer(04,itype,ai_phase) = p_pcg5_f_c_a04 + if (p_pcg6_f_c_a04 .ge. p1st) lptr_pcg6_f_c_aer(04,itype,ai_phase) = p_pcg6_f_c_a04 + if (p_pcg7_f_c_a04 .ge. p1st) lptr_pcg7_f_c_aer(04,itype,ai_phase) = p_pcg7_f_c_a04 + if (p_pcg8_f_c_a04 .ge. p1st) lptr_pcg8_f_c_aer(04,itype,ai_phase) = p_pcg8_f_c_a04 + if (p_pcg9_f_c_a04 .ge. p1st) lptr_pcg9_f_c_aer(04,itype,ai_phase) = p_pcg9_f_c_a04 + if (p_pcg1_f_o_a04 .ge. p1st) lptr_pcg1_f_o_aer(04,itype,ai_phase) = p_pcg1_f_o_a04 + if (p_pcg2_f_o_a04 .ge. p1st) lptr_pcg2_f_o_aer(04,itype,ai_phase) = p_pcg2_f_o_a04 + if (p_pcg3_f_o_a04 .ge. p1st) lptr_pcg3_f_o_aer(04,itype,ai_phase) = p_pcg3_f_o_a04 + if (p_pcg4_f_o_a04 .ge. p1st) lptr_pcg4_f_o_aer(04,itype,ai_phase) = p_pcg4_f_o_a04 + if (p_pcg5_f_o_a04 .ge. p1st) lptr_pcg5_f_o_aer(04,itype,ai_phase) = p_pcg5_f_o_a04 + if (p_pcg6_f_o_a04 .ge. p1st) lptr_pcg6_f_o_aer(04,itype,ai_phase) = p_pcg6_f_o_a04 + if (p_pcg7_f_o_a04 .ge. p1st) lptr_pcg7_f_o_aer(04,itype,ai_phase) = p_pcg7_f_o_a04 + if (p_pcg8_f_o_a04 .ge. p1st) lptr_pcg8_f_o_aer(04,itype,ai_phase) = p_pcg8_f_o_a04 + if (p_pcg9_f_o_a04 .ge. p1st) lptr_pcg9_f_o_aer(04,itype,ai_phase) = p_pcg9_f_o_a04 + if (p_opcg1_f_c_a04 .ge. p1st) lptr_opcg1_f_c_aer(04,itype,ai_phase) = p_opcg1_f_c_a04 + if (p_opcg2_f_c_a04 .ge. p1st) lptr_opcg2_f_c_aer(04,itype,ai_phase) = p_opcg2_f_c_a04 + if (p_opcg3_f_c_a04 .ge. p1st) lptr_opcg3_f_c_aer(04,itype,ai_phase) = p_opcg3_f_c_a04 + if (p_opcg4_f_c_a04 .ge. p1st) lptr_opcg4_f_c_aer(04,itype,ai_phase) = p_opcg4_f_c_a04 + if (p_opcg5_f_c_a04 .ge. p1st) lptr_opcg5_f_c_aer(04,itype,ai_phase) = p_opcg5_f_c_a04 + if (p_opcg6_f_c_a04 .ge. p1st) lptr_opcg6_f_c_aer(04,itype,ai_phase) = p_opcg6_f_c_a04 + if (p_opcg7_f_c_a04 .ge. p1st) lptr_opcg7_f_c_aer(04,itype,ai_phase) = p_opcg7_f_c_a04 + if (p_opcg8_f_c_a04 .ge. p1st) lptr_opcg8_f_c_aer(04,itype,ai_phase) = p_opcg8_f_c_a04 + if (p_opcg1_f_o_a04 .ge. p1st) lptr_opcg1_f_o_aer(04,itype,ai_phase) = p_opcg1_f_o_a04 + if (p_opcg2_f_o_a04 .ge. p1st) lptr_opcg2_f_o_aer(04,itype,ai_phase) = p_opcg2_f_o_a04 + if (p_opcg3_f_o_a04 .ge. p1st) lptr_opcg3_f_o_aer(04,itype,ai_phase) = p_opcg3_f_o_a04 + if (p_opcg4_f_o_a04 .ge. p1st) lptr_opcg4_f_o_aer(04,itype,ai_phase) = p_opcg4_f_o_a04 + if (p_opcg5_f_o_a04 .ge. p1st) lptr_opcg5_f_o_aer(04,itype,ai_phase) = p_opcg5_f_o_a04 + if (p_opcg6_f_o_a04 .ge. p1st) lptr_opcg6_f_o_aer(04,itype,ai_phase) = p_opcg6_f_o_a04 + if (p_opcg7_f_o_a04 .ge. p1st) lptr_opcg7_f_o_aer(04,itype,ai_phase) = p_opcg7_f_o_a04 + if (p_opcg8_f_o_a04 .ge. p1st) lptr_opcg8_f_o_aer(04,itype,ai_phase) = p_opcg8_f_o_a04 + if (p_ant1_c_a04 .ge. p1st) lptr_ant1_c_aer(04,itype,ai_phase) = p_ant1_c_a04 + if (p_ant2_c_a04 .ge. p1st) lptr_ant2_c_aer(04,itype,ai_phase) = p_ant2_c_a04 + if (p_ant3_c_a04 .ge. p1st) lptr_ant3_c_aer(04,itype,ai_phase) = p_ant3_c_a04 + if (p_ant4_c_a04 .ge. p1st) lptr_ant4_c_aer(04,itype,ai_phase) = p_ant4_c_a04 + if (p_ant1_o_a04 .ge. p1st) lptr_ant1_o_aer(04,itype,ai_phase) = p_ant1_o_a04 + if (p_ant2_o_a04 .ge. p1st) lptr_ant2_o_aer(04,itype,ai_phase) = p_ant2_o_a04 + if (p_ant3_o_a04 .ge. p1st) lptr_ant3_o_aer(04,itype,ai_phase) = p_ant3_o_a04 + if (p_ant4_o_a04 .ge. p1st) lptr_ant4_o_aer(04,itype,ai_phase) = p_ant4_o_a04 + if (p_biog1_c_a04 .ge. p1st) lptr_biog1_c_aer(04,itype,ai_phase) = p_biog1_c_a04 + if (p_biog2_c_a04 .ge. p1st) lptr_biog2_c_aer(04,itype,ai_phase) = p_biog2_c_a04 + if (p_biog3_c_a04 .ge. p1st) lptr_biog3_c_aer(04,itype,ai_phase) = p_biog3_c_a04 + if (p_biog4_c_a04 .ge. p1st) lptr_biog4_c_aer(04,itype,ai_phase) = p_biog4_c_a04 + if (p_biog1_o_a04 .ge. p1st) lptr_biog1_o_aer(04,itype,ai_phase) = p_biog1_o_a04 + if (p_biog2_o_a04 .ge. p1st) lptr_biog2_o_aer(04,itype,ai_phase) = p_biog2_o_a04 + if (p_biog3_o_a04 .ge. p1st) lptr_biog3_o_aer(04,itype,ai_phase) = p_biog3_o_a04 + if (p_biog4_o_a04 .ge. p1st) lptr_biog4_o_aer(04,itype,ai_phase) = p_biog4_o_a04 + if (p_num_a04 .ge. p1st) numptr_aer(04,itype,ai_phase) = p_num_a04 + end if + if (nsize_aer(itype) .ge. 5) then lptr_so4_aer(05,itype,ai_phase) = p_so4_a05 @@ -1425,6 +5394,77 @@ subroutine init_data_mosaic_ptr( is_aerosol ) lptr_bc_aer(05,itype,ai_phase) = p_bc_a05 hyswptr_aer(05,itype) = p_hysw_a05 waterptr_aer(05,itype) = p_water_a05 + lptr_pcg1_b_c_aer(05,itype,ai_phase) = p_pcg1_b_c_a05 + lptr_pcg2_b_c_aer(05,itype,ai_phase) = p_pcg2_b_c_a05 + lptr_pcg3_b_c_aer(05,itype,ai_phase) = p_pcg3_b_c_a05 + lptr_pcg4_b_c_aer(05,itype,ai_phase) = p_pcg4_b_c_a05 + lptr_pcg5_b_c_aer(05,itype,ai_phase) = p_pcg5_b_c_a05 + lptr_pcg6_b_c_aer(05,itype,ai_phase) = p_pcg6_b_c_a05 + lptr_pcg7_b_c_aer(05,itype,ai_phase) = p_pcg7_b_c_a05 + lptr_pcg8_b_c_aer(05,itype,ai_phase) = p_pcg8_b_c_a05 + lptr_pcg9_b_c_aer(05,itype,ai_phase) = p_pcg9_b_c_a05 + lptr_pcg1_b_o_aer(05,itype,ai_phase) = p_pcg1_b_o_a05 + lptr_pcg2_b_o_aer(05,itype,ai_phase) = p_pcg2_b_o_a05 + lptr_pcg3_b_o_aer(05,itype,ai_phase) = p_pcg3_b_o_a05 + lptr_pcg4_b_o_aer(05,itype,ai_phase) = p_pcg4_b_o_a05 + lptr_pcg5_b_o_aer(05,itype,ai_phase) = p_pcg5_b_o_a05 + lptr_pcg6_b_o_aer(05,itype,ai_phase) = p_pcg6_b_o_a05 + lptr_pcg7_b_o_aer(05,itype,ai_phase) = p_pcg7_b_o_a05 + lptr_pcg8_b_o_aer(05,itype,ai_phase) = p_pcg8_b_o_a05 + lptr_pcg9_b_o_aer(05,itype,ai_phase) = p_pcg9_b_o_a05 + lptr_opcg1_b_c_aer(05,itype,ai_phase) = p_opcg1_b_c_a05 + lptr_opcg2_b_c_aer(05,itype,ai_phase) = p_opcg2_b_c_a05 + lptr_opcg3_b_c_aer(05,itype,ai_phase) = p_opcg3_b_c_a05 + lptr_opcg4_b_c_aer(05,itype,ai_phase) = p_opcg4_b_c_a05 + lptr_opcg5_b_c_aer(05,itype,ai_phase) = p_opcg5_b_c_a05 + lptr_opcg6_b_c_aer(05,itype,ai_phase) = p_opcg6_b_c_a05 + lptr_opcg7_b_c_aer(05,itype,ai_phase) = p_opcg7_b_c_a05 + lptr_opcg8_b_c_aer(05,itype,ai_phase) = p_opcg8_b_c_a05 + lptr_opcg1_b_o_aer(05,itype,ai_phase) = p_opcg1_b_o_a05 + lptr_opcg2_b_o_aer(05,itype,ai_phase) = p_opcg2_b_o_a05 + lptr_opcg3_b_o_aer(05,itype,ai_phase) = p_opcg3_b_o_a05 + lptr_opcg4_b_o_aer(05,itype,ai_phase) = p_opcg4_b_o_a05 + lptr_opcg5_b_o_aer(05,itype,ai_phase) = p_opcg5_b_o_a05 + lptr_opcg6_b_o_aer(05,itype,ai_phase) = p_opcg6_b_o_a05 + lptr_opcg7_b_o_aer(05,itype,ai_phase) = p_opcg7_b_o_a05 + lptr_opcg8_b_o_aer(05,itype,ai_phase) = p_opcg8_b_o_a05 + lptr_pcg1_f_c_aer(05,itype,ai_phase) = p_pcg1_f_c_a05 + lptr_pcg2_f_c_aer(05,itype,ai_phase) = p_pcg2_f_c_a05 + lptr_pcg3_f_c_aer(05,itype,ai_phase) = p_pcg3_f_c_a05 + lptr_pcg4_f_c_aer(05,itype,ai_phase) = p_pcg4_f_c_a05 + lptr_pcg5_f_c_aer(05,itype,ai_phase) = p_pcg5_f_c_a05 + lptr_pcg6_f_c_aer(05,itype,ai_phase) = p_pcg6_f_c_a05 + lptr_pcg7_f_c_aer(05,itype,ai_phase) = p_pcg7_f_c_a05 + lptr_pcg8_f_c_aer(05,itype,ai_phase) = p_pcg8_f_c_a05 + lptr_pcg9_f_c_aer(05,itype,ai_phase) = p_pcg9_f_c_a05 + lptr_pcg1_f_o_aer(05,itype,ai_phase) = p_pcg1_f_o_a05 + lptr_pcg2_f_o_aer(05,itype,ai_phase) = p_pcg2_f_o_a05 + lptr_pcg3_f_o_aer(05,itype,ai_phase) = p_pcg3_f_o_a05 + lptr_pcg4_f_o_aer(05,itype,ai_phase) = p_pcg4_f_o_a05 + lptr_pcg5_f_o_aer(05,itype,ai_phase) = p_pcg5_f_o_a05 + lptr_pcg6_f_o_aer(05,itype,ai_phase) = p_pcg6_f_o_a05 + lptr_pcg7_f_o_aer(05,itype,ai_phase) = p_pcg7_f_o_a05 + lptr_pcg8_f_o_aer(05,itype,ai_phase) = p_pcg8_f_o_a05 + lptr_pcg9_f_o_aer(05,itype,ai_phase) = p_pcg9_f_o_a05 + lptr_opcg1_f_c_aer(05,itype,ai_phase) = p_opcg1_f_c_a05 + lptr_opcg2_f_c_aer(05,itype,ai_phase) = p_opcg2_f_c_a05 + lptr_opcg3_f_c_aer(05,itype,ai_phase) = p_opcg3_f_c_a05 + lptr_opcg4_f_c_aer(05,itype,ai_phase) = p_opcg4_f_c_a05 + lptr_opcg5_f_c_aer(05,itype,ai_phase) = p_opcg5_f_c_a05 + lptr_opcg6_f_c_aer(05,itype,ai_phase) = p_opcg6_f_c_a05 + lptr_opcg7_f_c_aer(05,itype,ai_phase) = p_opcg7_f_c_a05 + lptr_opcg8_f_c_aer(05,itype,ai_phase) = p_opcg8_f_c_a05 + lptr_opcg1_f_o_aer(05,itype,ai_phase) = p_opcg1_f_o_a05 + lptr_opcg2_f_o_aer(05,itype,ai_phase) = p_opcg2_f_o_a05 + lptr_opcg3_f_o_aer(05,itype,ai_phase) = p_opcg3_f_o_a05 + lptr_opcg4_f_o_aer(05,itype,ai_phase) = p_opcg4_f_o_a05 + lptr_opcg5_f_o_aer(05,itype,ai_phase) = p_opcg5_f_o_a05 + lptr_opcg6_f_o_aer(05,itype,ai_phase) = p_opcg6_f_o_a05 + lptr_opcg7_f_o_aer(05,itype,ai_phase) = p_opcg7_f_o_a05 + lptr_opcg8_f_o_aer(05,itype,ai_phase) = p_opcg8_f_o_a05 + + + numptr_aer(05,itype,ai_phase) = p_num_a05 end if @@ -1442,6 +5482,77 @@ subroutine init_data_mosaic_ptr( is_aerosol ) lptr_bc_aer(06,itype,ai_phase) = p_bc_a06 hyswptr_aer(06,itype) = p_hysw_a06 waterptr_aer(06,itype) = p_water_a06 + lptr_pcg1_b_c_aer(06,itype,ai_phase) = p_pcg1_b_c_a06 + lptr_pcg2_b_c_aer(06,itype,ai_phase) = p_pcg2_b_c_a06 + lptr_pcg3_b_c_aer(06,itype,ai_phase) = p_pcg3_b_c_a06 + lptr_pcg4_b_c_aer(06,itype,ai_phase) = p_pcg4_b_c_a06 + lptr_pcg5_b_c_aer(06,itype,ai_phase) = p_pcg5_b_c_a06 + lptr_pcg6_b_c_aer(06,itype,ai_phase) = p_pcg6_b_c_a06 + lptr_pcg7_b_c_aer(06,itype,ai_phase) = p_pcg7_b_c_a06 + lptr_pcg8_b_c_aer(06,itype,ai_phase) = p_pcg8_b_c_a06 + lptr_pcg9_b_c_aer(06,itype,ai_phase) = p_pcg9_b_c_a06 + lptr_pcg1_b_o_aer(06,itype,ai_phase) = p_pcg1_b_o_a06 + lptr_pcg2_b_o_aer(06,itype,ai_phase) = p_pcg2_b_o_a06 + lptr_pcg3_b_o_aer(06,itype,ai_phase) = p_pcg3_b_o_a06 + lptr_pcg4_b_o_aer(06,itype,ai_phase) = p_pcg4_b_o_a06 + lptr_pcg5_b_o_aer(06,itype,ai_phase) = p_pcg5_b_o_a06 + lptr_pcg6_b_o_aer(06,itype,ai_phase) = p_pcg6_b_o_a06 + lptr_pcg7_b_o_aer(06,itype,ai_phase) = p_pcg7_b_o_a06 + lptr_pcg8_b_o_aer(06,itype,ai_phase) = p_pcg8_b_o_a06 + lptr_pcg9_b_o_aer(06,itype,ai_phase) = p_pcg9_b_o_a06 + lptr_opcg1_b_c_aer(06,itype,ai_phase) = p_opcg1_b_c_a06 + lptr_opcg2_b_c_aer(06,itype,ai_phase) = p_opcg2_b_c_a06 + lptr_opcg3_b_c_aer(06,itype,ai_phase) = p_opcg3_b_c_a06 + lptr_opcg4_b_c_aer(06,itype,ai_phase) = p_opcg4_b_c_a06 + lptr_opcg5_b_c_aer(06,itype,ai_phase) = p_opcg5_b_c_a06 + lptr_opcg6_b_c_aer(06,itype,ai_phase) = p_opcg6_b_c_a06 + lptr_opcg7_b_c_aer(06,itype,ai_phase) = p_opcg7_b_c_a06 + lptr_opcg8_b_c_aer(06,itype,ai_phase) = p_opcg8_b_c_a06 + lptr_opcg1_b_o_aer(06,itype,ai_phase) = p_opcg1_b_o_a06 + lptr_opcg2_b_o_aer(06,itype,ai_phase) = p_opcg2_b_o_a06 + lptr_opcg3_b_o_aer(06,itype,ai_phase) = p_opcg3_b_o_a06 + lptr_opcg4_b_o_aer(06,itype,ai_phase) = p_opcg4_b_o_a06 + lptr_opcg5_b_o_aer(06,itype,ai_phase) = p_opcg5_b_o_a06 + lptr_opcg6_b_o_aer(06,itype,ai_phase) = p_opcg6_b_o_a06 + lptr_opcg7_b_o_aer(06,itype,ai_phase) = p_opcg7_b_o_a06 + lptr_opcg8_b_o_aer(06,itype,ai_phase) = p_opcg8_b_o_a06 + lptr_pcg1_f_c_aer(06,itype,ai_phase) = p_pcg1_f_c_a06 + lptr_pcg2_f_c_aer(06,itype,ai_phase) = p_pcg2_f_c_a06 + lptr_pcg3_f_c_aer(06,itype,ai_phase) = p_pcg3_f_c_a06 + lptr_pcg4_f_c_aer(06,itype,ai_phase) = p_pcg4_f_c_a06 + lptr_pcg5_f_c_aer(06,itype,ai_phase) = p_pcg5_f_c_a06 + lptr_pcg6_f_c_aer(06,itype,ai_phase) = p_pcg6_f_c_a06 + lptr_pcg7_f_c_aer(06,itype,ai_phase) = p_pcg7_f_c_a06 + lptr_pcg8_f_c_aer(06,itype,ai_phase) = p_pcg8_f_c_a06 + lptr_pcg9_f_c_aer(06,itype,ai_phase) = p_pcg9_f_c_a06 + lptr_pcg1_f_o_aer(06,itype,ai_phase) = p_pcg1_f_o_a06 + lptr_pcg2_f_o_aer(06,itype,ai_phase) = p_pcg2_f_o_a06 + lptr_pcg3_f_o_aer(06,itype,ai_phase) = p_pcg3_f_o_a06 + lptr_pcg4_f_o_aer(06,itype,ai_phase) = p_pcg4_f_o_a06 + lptr_pcg5_f_o_aer(06,itype,ai_phase) = p_pcg5_f_o_a06 + lptr_pcg6_f_o_aer(06,itype,ai_phase) = p_pcg6_f_o_a06 + lptr_pcg7_f_o_aer(06,itype,ai_phase) = p_pcg7_f_o_a06 + lptr_pcg8_f_o_aer(06,itype,ai_phase) = p_pcg8_f_o_a06 + lptr_pcg9_f_o_aer(06,itype,ai_phase) = p_pcg9_f_o_a06 + lptr_opcg1_f_c_aer(06,itype,ai_phase) = p_opcg1_f_c_a06 + lptr_opcg2_f_c_aer(06,itype,ai_phase) = p_opcg2_f_c_a06 + lptr_opcg3_f_c_aer(06,itype,ai_phase) = p_opcg3_f_c_a06 + lptr_opcg4_f_c_aer(06,itype,ai_phase) = p_opcg4_f_c_a06 + lptr_opcg5_f_c_aer(06,itype,ai_phase) = p_opcg5_f_c_a06 + lptr_opcg6_f_c_aer(06,itype,ai_phase) = p_opcg6_f_c_a06 + lptr_opcg7_f_c_aer(06,itype,ai_phase) = p_opcg7_f_c_a06 + lptr_opcg8_f_c_aer(06,itype,ai_phase) = p_opcg8_f_c_a06 + lptr_opcg1_f_o_aer(06,itype,ai_phase) = p_opcg1_f_o_a06 + lptr_opcg2_f_o_aer(06,itype,ai_phase) = p_opcg2_f_o_a06 + lptr_opcg3_f_o_aer(06,itype,ai_phase) = p_opcg3_f_o_a06 + lptr_opcg4_f_o_aer(06,itype,ai_phase) = p_opcg4_f_o_a06 + lptr_opcg5_f_o_aer(06,itype,ai_phase) = p_opcg5_f_o_a06 + lptr_opcg6_f_o_aer(06,itype,ai_phase) = p_opcg6_f_o_a06 + lptr_opcg7_f_o_aer(06,itype,ai_phase) = p_opcg7_f_o_a06 + lptr_opcg8_f_o_aer(06,itype,ai_phase) = p_opcg8_f_o_a06 + + + numptr_aer(06,itype,ai_phase) = p_num_a06 end if @@ -1459,6 +5570,77 @@ subroutine init_data_mosaic_ptr( is_aerosol ) lptr_bc_aer(07,itype,ai_phase) = p_bc_a07 hyswptr_aer(07,itype) = p_hysw_a07 waterptr_aer(07,itype) = p_water_a07 + lptr_pcg1_b_c_aer(07,itype,ai_phase) = p_pcg1_b_c_a07 + lptr_pcg2_b_c_aer(07,itype,ai_phase) = p_pcg2_b_c_a07 + lptr_pcg3_b_c_aer(07,itype,ai_phase) = p_pcg3_b_c_a07 + lptr_pcg4_b_c_aer(07,itype,ai_phase) = p_pcg4_b_c_a07 + lptr_pcg5_b_c_aer(07,itype,ai_phase) = p_pcg5_b_c_a07 + lptr_pcg6_b_c_aer(07,itype,ai_phase) = p_pcg6_b_c_a07 + lptr_pcg7_b_c_aer(07,itype,ai_phase) = p_pcg7_b_c_a07 + lptr_pcg8_b_c_aer(07,itype,ai_phase) = p_pcg8_b_c_a07 + lptr_pcg9_b_c_aer(07,itype,ai_phase) = p_pcg9_b_c_a07 + lptr_pcg1_b_o_aer(07,itype,ai_phase) = p_pcg1_b_o_a07 + lptr_pcg2_b_o_aer(07,itype,ai_phase) = p_pcg2_b_o_a07 + lptr_pcg3_b_o_aer(07,itype,ai_phase) = p_pcg3_b_o_a07 + lptr_pcg4_b_o_aer(07,itype,ai_phase) = p_pcg4_b_o_a07 + lptr_pcg5_b_o_aer(07,itype,ai_phase) = p_pcg5_b_o_a07 + lptr_pcg6_b_o_aer(07,itype,ai_phase) = p_pcg6_b_o_a07 + lptr_pcg7_b_o_aer(07,itype,ai_phase) = p_pcg7_b_o_a07 + lptr_pcg8_b_o_aer(07,itype,ai_phase) = p_pcg8_b_o_a07 + lptr_pcg9_b_o_aer(07,itype,ai_phase) = p_pcg9_b_o_a07 + lptr_opcg1_b_c_aer(07,itype,ai_phase) = p_opcg1_b_c_a07 + lptr_opcg2_b_c_aer(07,itype,ai_phase) = p_opcg2_b_c_a07 + lptr_opcg3_b_c_aer(07,itype,ai_phase) = p_opcg3_b_c_a07 + lptr_opcg4_b_c_aer(07,itype,ai_phase) = p_opcg4_b_c_a07 + lptr_opcg5_b_c_aer(07,itype,ai_phase) = p_opcg5_b_c_a07 + lptr_opcg6_b_c_aer(07,itype,ai_phase) = p_opcg6_b_c_a07 + lptr_opcg7_b_c_aer(07,itype,ai_phase) = p_opcg7_b_c_a07 + lptr_opcg8_b_c_aer(07,itype,ai_phase) = p_opcg8_b_c_a07 + lptr_opcg1_b_o_aer(07,itype,ai_phase) = p_opcg1_b_o_a07 + lptr_opcg2_b_o_aer(07,itype,ai_phase) = p_opcg2_b_o_a07 + lptr_opcg3_b_o_aer(07,itype,ai_phase) = p_opcg3_b_o_a07 + lptr_opcg4_b_o_aer(07,itype,ai_phase) = p_opcg4_b_o_a07 + lptr_opcg5_b_o_aer(07,itype,ai_phase) = p_opcg5_b_o_a07 + lptr_opcg6_b_o_aer(07,itype,ai_phase) = p_opcg6_b_o_a07 + lptr_opcg7_b_o_aer(07,itype,ai_phase) = p_opcg7_b_o_a07 + lptr_opcg8_b_o_aer(07,itype,ai_phase) = p_opcg8_b_o_a07 + lptr_pcg1_f_c_aer(07,itype,ai_phase) = p_pcg1_f_c_a07 + lptr_pcg2_f_c_aer(07,itype,ai_phase) = p_pcg2_f_c_a07 + lptr_pcg3_f_c_aer(07,itype,ai_phase) = p_pcg3_f_c_a07 + lptr_pcg4_f_c_aer(07,itype,ai_phase) = p_pcg4_f_c_a07 + lptr_pcg5_f_c_aer(07,itype,ai_phase) = p_pcg5_f_c_a07 + lptr_pcg6_f_c_aer(07,itype,ai_phase) = p_pcg6_f_c_a07 + lptr_pcg7_f_c_aer(07,itype,ai_phase) = p_pcg7_f_c_a07 + lptr_pcg8_f_c_aer(07,itype,ai_phase) = p_pcg8_f_c_a07 + lptr_pcg9_f_c_aer(07,itype,ai_phase) = p_pcg9_f_c_a07 + lptr_pcg1_f_o_aer(07,itype,ai_phase) = p_pcg1_f_o_a07 + lptr_pcg2_f_o_aer(07,itype,ai_phase) = p_pcg2_f_o_a07 + lptr_pcg3_f_o_aer(07,itype,ai_phase) = p_pcg3_f_o_a07 + lptr_pcg4_f_o_aer(07,itype,ai_phase) = p_pcg4_f_o_a07 + lptr_pcg5_f_o_aer(07,itype,ai_phase) = p_pcg5_f_o_a07 + lptr_pcg6_f_o_aer(07,itype,ai_phase) = p_pcg6_f_o_a07 + lptr_pcg7_f_o_aer(07,itype,ai_phase) = p_pcg7_f_o_a07 + lptr_pcg8_f_o_aer(07,itype,ai_phase) = p_pcg8_f_o_a07 + lptr_pcg9_f_o_aer(07,itype,ai_phase) = p_pcg9_f_o_a07 + lptr_opcg1_f_c_aer(07,itype,ai_phase) = p_opcg1_f_c_a07 + lptr_opcg2_f_c_aer(07,itype,ai_phase) = p_opcg2_f_c_a07 + lptr_opcg3_f_c_aer(07,itype,ai_phase) = p_opcg3_f_c_a07 + lptr_opcg4_f_c_aer(07,itype,ai_phase) = p_opcg4_f_c_a07 + lptr_opcg5_f_c_aer(07,itype,ai_phase) = p_opcg5_f_c_a07 + lptr_opcg6_f_c_aer(07,itype,ai_phase) = p_opcg6_f_c_a07 + lptr_opcg7_f_c_aer(07,itype,ai_phase) = p_opcg7_f_c_a07 + lptr_opcg8_f_c_aer(07,itype,ai_phase) = p_opcg8_f_c_a07 + lptr_opcg1_f_o_aer(07,itype,ai_phase) = p_opcg1_f_o_a07 + lptr_opcg2_f_o_aer(07,itype,ai_phase) = p_opcg2_f_o_a07 + lptr_opcg3_f_o_aer(07,itype,ai_phase) = p_opcg3_f_o_a07 + lptr_opcg4_f_o_aer(07,itype,ai_phase) = p_opcg4_f_o_a07 + lptr_opcg5_f_o_aer(07,itype,ai_phase) = p_opcg5_f_o_a07 + lptr_opcg6_f_o_aer(07,itype,ai_phase) = p_opcg6_f_o_a07 + lptr_opcg7_f_o_aer(07,itype,ai_phase) = p_opcg7_f_o_a07 + lptr_opcg8_f_o_aer(07,itype,ai_phase) = p_opcg8_f_o_a07 + + + numptr_aer(07,itype,ai_phase) = p_num_a07 end if @@ -1476,6 +5658,77 @@ subroutine init_data_mosaic_ptr( is_aerosol ) lptr_bc_aer(08,itype,ai_phase) = p_bc_a08 hyswptr_aer(08,itype) = p_hysw_a08 waterptr_aer(08,itype) = p_water_a08 + lptr_pcg1_b_c_aer(08,itype,ai_phase) = p_pcg1_b_c_a08 + lptr_pcg2_b_c_aer(08,itype,ai_phase) = p_pcg2_b_c_a08 + lptr_pcg3_b_c_aer(08,itype,ai_phase) = p_pcg3_b_c_a08 + lptr_pcg4_b_c_aer(08,itype,ai_phase) = p_pcg4_b_c_a08 + lptr_pcg5_b_c_aer(08,itype,ai_phase) = p_pcg5_b_c_a08 + lptr_pcg6_b_c_aer(08,itype,ai_phase) = p_pcg6_b_c_a08 + lptr_pcg7_b_c_aer(08,itype,ai_phase) = p_pcg7_b_c_a08 + lptr_pcg8_b_c_aer(08,itype,ai_phase) = p_pcg8_b_c_a08 + lptr_pcg9_b_c_aer(08,itype,ai_phase) = p_pcg9_b_c_a08 + lptr_pcg1_b_o_aer(08,itype,ai_phase) = p_pcg1_b_o_a08 + lptr_pcg2_b_o_aer(08,itype,ai_phase) = p_pcg2_b_o_a08 + lptr_pcg3_b_o_aer(08,itype,ai_phase) = p_pcg3_b_o_a08 + lptr_pcg4_b_o_aer(08,itype,ai_phase) = p_pcg4_b_o_a08 + lptr_pcg5_b_o_aer(08,itype,ai_phase) = p_pcg5_b_o_a08 + lptr_pcg6_b_o_aer(08,itype,ai_phase) = p_pcg6_b_o_a08 + lptr_pcg7_b_o_aer(08,itype,ai_phase) = p_pcg7_b_o_a08 + lptr_pcg8_b_o_aer(08,itype,ai_phase) = p_pcg8_b_o_a08 + lptr_pcg9_b_o_aer(08,itype,ai_phase) = p_pcg9_b_o_a08 + lptr_opcg1_b_c_aer(08,itype,ai_phase) = p_opcg1_b_c_a08 + lptr_opcg2_b_c_aer(08,itype,ai_phase) = p_opcg2_b_c_a08 + lptr_opcg3_b_c_aer(08,itype,ai_phase) = p_opcg3_b_c_a08 + lptr_opcg4_b_c_aer(08,itype,ai_phase) = p_opcg4_b_c_a08 + lptr_opcg5_b_c_aer(08,itype,ai_phase) = p_opcg5_b_c_a08 + lptr_opcg6_b_c_aer(08,itype,ai_phase) = p_opcg6_b_c_a08 + lptr_opcg7_b_c_aer(08,itype,ai_phase) = p_opcg7_b_c_a08 + lptr_opcg8_b_c_aer(08,itype,ai_phase) = p_opcg8_b_c_a08 + lptr_opcg1_b_o_aer(08,itype,ai_phase) = p_opcg1_b_o_a08 + lptr_opcg2_b_o_aer(08,itype,ai_phase) = p_opcg2_b_o_a08 + lptr_opcg3_b_o_aer(08,itype,ai_phase) = p_opcg3_b_o_a08 + lptr_opcg4_b_o_aer(08,itype,ai_phase) = p_opcg4_b_o_a08 + lptr_opcg5_b_o_aer(08,itype,ai_phase) = p_opcg5_b_o_a08 + lptr_opcg6_b_o_aer(08,itype,ai_phase) = p_opcg6_b_o_a08 + lptr_opcg7_b_o_aer(08,itype,ai_phase) = p_opcg7_b_o_a08 + lptr_opcg8_b_o_aer(08,itype,ai_phase) = p_opcg8_b_o_a08 + lptr_pcg1_f_c_aer(08,itype,ai_phase) = p_pcg1_f_c_a08 + lptr_pcg2_f_c_aer(08,itype,ai_phase) = p_pcg2_f_c_a08 + lptr_pcg3_f_c_aer(08,itype,ai_phase) = p_pcg3_f_c_a08 + lptr_pcg4_f_c_aer(08,itype,ai_phase) = p_pcg4_f_c_a08 + lptr_pcg5_f_c_aer(08,itype,ai_phase) = p_pcg5_f_c_a08 + lptr_pcg6_f_c_aer(08,itype,ai_phase) = p_pcg6_f_c_a08 + lptr_pcg7_f_c_aer(08,itype,ai_phase) = p_pcg7_f_c_a08 + lptr_pcg8_f_c_aer(08,itype,ai_phase) = p_pcg8_f_c_a08 + lptr_pcg9_f_c_aer(08,itype,ai_phase) = p_pcg9_f_c_a08 + lptr_pcg1_f_o_aer(08,itype,ai_phase) = p_pcg1_f_o_a08 + lptr_pcg2_f_o_aer(08,itype,ai_phase) = p_pcg2_f_o_a08 + lptr_pcg3_f_o_aer(08,itype,ai_phase) = p_pcg3_f_o_a08 + lptr_pcg4_f_o_aer(08,itype,ai_phase) = p_pcg4_f_o_a08 + lptr_pcg5_f_o_aer(08,itype,ai_phase) = p_pcg5_f_o_a08 + lptr_pcg6_f_o_aer(08,itype,ai_phase) = p_pcg6_f_o_a08 + lptr_pcg7_f_o_aer(08,itype,ai_phase) = p_pcg7_f_o_a08 + lptr_pcg8_f_o_aer(08,itype,ai_phase) = p_pcg8_f_o_a08 + lptr_pcg9_f_o_aer(08,itype,ai_phase) = p_pcg9_f_o_a08 + lptr_opcg1_f_c_aer(08,itype,ai_phase) = p_opcg1_f_c_a08 + lptr_opcg2_f_c_aer(08,itype,ai_phase) = p_opcg2_f_c_a08 + lptr_opcg3_f_c_aer(08,itype,ai_phase) = p_opcg3_f_c_a08 + lptr_opcg4_f_c_aer(08,itype,ai_phase) = p_opcg4_f_c_a08 + lptr_opcg5_f_c_aer(08,itype,ai_phase) = p_opcg5_f_c_a08 + lptr_opcg6_f_c_aer(08,itype,ai_phase) = p_opcg6_f_c_a08 + lptr_opcg7_f_c_aer(08,itype,ai_phase) = p_opcg7_f_c_a08 + lptr_opcg8_f_c_aer(08,itype,ai_phase) = p_opcg8_f_c_a08 + lptr_opcg1_f_o_aer(08,itype,ai_phase) = p_opcg1_f_o_a08 + lptr_opcg2_f_o_aer(08,itype,ai_phase) = p_opcg2_f_o_a08 + lptr_opcg3_f_o_aer(08,itype,ai_phase) = p_opcg3_f_o_a08 + lptr_opcg4_f_o_aer(08,itype,ai_phase) = p_opcg4_f_o_a08 + lptr_opcg5_f_o_aer(08,itype,ai_phase) = p_opcg5_f_o_a08 + lptr_opcg6_f_o_aer(08,itype,ai_phase) = p_opcg6_f_o_a08 + lptr_opcg7_f_o_aer(08,itype,ai_phase) = p_opcg7_f_o_a08 + lptr_opcg8_f_o_aer(08,itype,ai_phase) = p_opcg8_f_o_a08 + + + numptr_aer(08,itype,ai_phase) = p_num_a08 end if @@ -1736,12 +5989,6 @@ subroutine init_data_mosaic_ptr( is_aerosol ) spectxt = 'cl_' nspectxt = 3 - else if (l_mastercomp .eq. mastercompindx_msa_aer) then - lptr_dum = lptr_msa_aer(n,itype,iphase) - mcindx_dum = mastercompindx_msa_aer - spectxt = 'msa_' - nspectxt = 4 - else if (l_mastercomp .eq. mastercompindx_co3_aer) then lptr_dum = lptr_co3_aer(n,itype,iphase) mcindx_dum = mastercompindx_co3_aer @@ -1784,6 +6031,488 @@ subroutine init_data_mosaic_ptr( is_aerosol ) spectxt = 'bc_' nspectxt = 3 + + else if (l_mastercomp .eq. mastercompindx_pcg1_b_c_aer) then + lptr_dum = lptr_pcg1_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg1_b_c_aer + spectxt = 'pcg1_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg2_b_c_aer) then + lptr_dum = lptr_pcg2_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg2_b_c_aer + spectxt = 'pcg2_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg3_b_c_aer) then + lptr_dum = lptr_pcg3_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg3_b_c_aer + spectxt = 'pcg3_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg4_b_c_aer) then + lptr_dum = lptr_pcg4_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg4_b_c_aer + spectxt = 'pcg4_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg5_b_c_aer) then + lptr_dum = lptr_pcg5_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg5_b_c_aer + spectxt = 'pcg5_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg6_b_c_aer) then + lptr_dum = lptr_pcg6_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg6_b_c_aer + spectxt = 'pcg6_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg7_b_c_aer) then + lptr_dum = lptr_pcg7_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg7_b_c_aer + spectxt = 'pcg7_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg8_b_c_aer) then + lptr_dum = lptr_pcg8_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg8_b_c_aer + spectxt = 'pcg8_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg9_b_c_aer) then + lptr_dum = lptr_pcg9_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg9_b_c_aer + spectxt = 'pcg9_b_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg1_b_o_aer) then + lptr_dum = lptr_pcg1_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg1_b_o_aer + spectxt = 'pcg1_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg2_b_o_aer) then + lptr_dum = lptr_pcg2_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg2_b_o_aer + spectxt = 'pcg2_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg3_b_o_aer) then + lptr_dum = lptr_pcg3_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg3_b_o_aer + spectxt = 'pcg3_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg4_b_o_aer) then + lptr_dum = lptr_pcg4_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg4_b_o_aer + spectxt = 'pcg4_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg5_b_o_aer) then + lptr_dum = lptr_pcg5_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg5_b_o_aer + spectxt = 'pcg5_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg6_b_o_aer) then + lptr_dum = lptr_pcg6_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg6_b_o_aer + spectxt = 'pcg6_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg7_b_o_aer) then + lptr_dum = lptr_pcg7_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg7_b_o_aer + spectxt = 'pcg7_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg8_b_o_aer) then + lptr_dum = lptr_pcg8_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg8_b_o_aer + spectxt = 'pcg8_b_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg9_b_o_aer) then + lptr_dum = lptr_pcg9_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg9_b_o_aer + spectxt = 'pcg9_b_o_' + nspectxt = 9 + else if (l_mastercomp .eq. mastercompindx_opcg1_b_c_aer) then + lptr_dum = lptr_opcg1_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg1_b_c_aer + spectxt = 'opcg1_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg2_b_c_aer) then + lptr_dum = lptr_opcg2_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg2_b_c_aer + spectxt = 'opcg2_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg3_b_c_aer) then + lptr_dum = lptr_opcg3_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg3_b_c_aer + spectxt = 'opcg3_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg4_b_c_aer) then + lptr_dum = lptr_opcg4_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg4_b_c_aer + spectxt = 'opcg4_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg5_b_c_aer) then + lptr_dum = lptr_opcg5_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg5_b_c_aer + spectxt = 'opcg5_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg6_b_c_aer) then + lptr_dum = lptr_opcg6_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg6_b_c_aer + spectxt = 'opcg6_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg7_b_c_aer) then + lptr_dum = lptr_opcg7_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg7_b_c_aer + spectxt = 'opcg7_b_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg8_b_c_aer) then + lptr_dum = lptr_opcg8_b_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg8_b_c_aer + spectxt = 'opcg8_b_c_' + nspectxt = 10 + else if (l_mastercomp .eq. mastercompindx_opcg1_b_o_aer) then + lptr_dum = lptr_opcg1_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg1_b_o_aer + spectxt = 'opcg1_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg2_b_o_aer) then + lptr_dum = lptr_opcg2_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg2_b_o_aer + spectxt = 'opcg2_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg3_b_o_aer) then + lptr_dum = lptr_opcg3_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg3_b_o_aer + spectxt = 'opcg3_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg4_b_o_aer) then + lptr_dum = lptr_opcg4_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg4_b_o_aer + spectxt = 'opcg4_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg5_b_o_aer) then + lptr_dum = lptr_opcg5_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg5_b_o_aer + spectxt = 'opcg5_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg6_b_o_aer) then + lptr_dum = lptr_opcg6_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg6_b_o_aer + spectxt = 'opcg6_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg7_b_o_aer) then + lptr_dum = lptr_opcg7_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg7_b_o_aer + spectxt = 'opcg7_b_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg8_b_o_aer) then + lptr_dum = lptr_opcg8_b_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg8_b_o_aer + spectxt = 'opcg8_b_o_' + nspectxt = 10 + else if (l_mastercomp .eq. mastercompindx_pcg1_f_c_aer) then + lptr_dum = lptr_pcg1_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg1_f_c_aer + spectxt = 'pcg1_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg2_f_c_aer) then + lptr_dum = lptr_pcg2_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg2_f_c_aer + spectxt = 'pcg2_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg3_f_c_aer) then + lptr_dum = lptr_pcg3_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg3_f_c_aer + spectxt = 'pcg3_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg4_f_c_aer) then + lptr_dum = lptr_pcg4_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg4_f_c_aer + spectxt = 'pcg4_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg5_f_c_aer) then + lptr_dum = lptr_pcg5_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg5_f_c_aer + spectxt = 'pcg5_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg6_f_c_aer) then + lptr_dum = lptr_pcg6_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg6_f_c_aer + spectxt = 'pcg6_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg7_f_c_aer) then + lptr_dum = lptr_pcg7_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg7_f_c_aer + spectxt = 'pcg7_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg8_f_c_aer) then + lptr_dum = lptr_pcg8_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg8_f_c_aer + spectxt = 'pcg8_f_c_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg9_f_c_aer) then + lptr_dum = lptr_pcg9_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg9_f_c_aer + spectxt = 'pcg9_f_c_' + nspectxt = 9 + else if (l_mastercomp .eq. mastercompindx_pcg1_f_o_aer) then + lptr_dum = lptr_pcg1_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg1_f_o_aer + spectxt = 'pcg1_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg2_f_o_aer) then + lptr_dum = lptr_pcg2_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg2_f_o_aer + spectxt = 'pcg2_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg3_f_o_aer) then + lptr_dum = lptr_pcg3_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg3_f_o_aer + spectxt = 'pcg3_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg4_f_o_aer) then + lptr_dum = lptr_pcg4_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg4_f_o_aer + spectxt = 'pcg4_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg5_f_o_aer) then + lptr_dum = lptr_pcg5_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg5_f_o_aer + spectxt = 'pcg5_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg6_f_o_aer) then + lptr_dum = lptr_pcg6_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg6_f_o_aer + spectxt = 'pcg6_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg7_f_o_aer) then + lptr_dum = lptr_pcg7_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg7_f_o_aer + spectxt = 'pcg7_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg8_f_o_aer) then + lptr_dum = lptr_pcg8_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg8_f_o_aer + spectxt = 'pcg8_f_o_' + nspectxt = 9 + + else if (l_mastercomp .eq. mastercompindx_pcg9_f_o_aer) then + lptr_dum = lptr_pcg9_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_pcg9_f_o_aer + spectxt = 'pcg9_f_o_' + nspectxt = 9 + else if (l_mastercomp .eq. mastercompindx_opcg1_f_c_aer) then + lptr_dum = lptr_opcg1_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg1_f_c_aer + spectxt = 'opcg1_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg2_f_c_aer) then + lptr_dum = lptr_opcg2_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg2_f_c_aer + spectxt = 'opcg2_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg3_f_c_aer) then + lptr_dum = lptr_opcg3_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg3_f_c_aer + spectxt = 'opcg3_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg4_f_c_aer) then + lptr_dum = lptr_opcg4_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg4_f_c_aer + spectxt = 'opcg4_f_c_' + nspectxt = 10 + else if (l_mastercomp .eq. mastercompindx_opcg5_f_c_aer) then + lptr_dum = lptr_opcg5_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg5_f_c_aer + spectxt = 'opcg5_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg6_f_c_aer) then + lptr_dum = lptr_opcg6_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg6_f_c_aer + spectxt = 'opcg6_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg7_f_c_aer) then + lptr_dum = lptr_opcg7_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg7_f_c_aer + spectxt = 'opcg7_f_c_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg8_f_c_aer) then + lptr_dum = lptr_opcg8_f_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg8_f_c_aer + spectxt = 'opcg8_f_c_' + nspectxt = 10 + else if (l_mastercomp .eq. mastercompindx_opcg1_f_o_aer) then + lptr_dum = lptr_opcg1_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg1_f_o_aer + spectxt = 'opcg1_f_o_' + nspectxt = 10 + else if (l_mastercomp .eq. mastercompindx_opcg2_f_o_aer) then + lptr_dum = lptr_opcg2_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg2_f_o_aer + spectxt = 'opcg2_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg3_f_o_aer) then + lptr_dum = lptr_opcg3_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg3_f_o_aer + spectxt = 'opcg3_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg4_f_o_aer) then + lptr_dum = lptr_opcg4_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg4_f_o_aer + spectxt = 'opcg4_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg5_f_o_aer) then + lptr_dum = lptr_opcg5_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg5_f_o_aer + spectxt = 'opcg5_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg6_f_o_aer) then + lptr_dum = lptr_opcg6_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg6_f_o_aer + spectxt = 'opcg6_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg7_f_o_aer) then + lptr_dum = lptr_opcg7_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg7_f_o_aer + spectxt = 'opcg7_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_opcg8_f_o_aer) then + lptr_dum = lptr_opcg8_f_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_opcg8_f_o_aer + spectxt = 'opcg8_f_o_' + nspectxt = 10 + + else if (l_mastercomp .eq. mastercompindx_ant1_c_aer) then + lptr_dum = lptr_ant1_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant1_c_aer + spectxt = 'ant1_c_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant2_c_aer) then + lptr_dum = lptr_ant2_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant2_c_aer + spectxt = 'ant2_c_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant3_c_aer) then + lptr_dum = lptr_ant3_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant3_c_aer + spectxt = 'ant3_c_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant4_c_aer) then + lptr_dum = lptr_ant4_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant4_c_aer + spectxt = 'ant4_c_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant1_o_aer) then + lptr_dum = lptr_ant1_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant1_o_aer + spectxt = 'ant1_o_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant2_o_aer) then + lptr_dum = lptr_ant2_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant2_o_aer + spectxt = 'ant2_o_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant3_o_aer) then + lptr_dum = lptr_ant3_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant3_o_aer + spectxt = 'ant3_o_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_ant4_o_aer) then + lptr_dum = lptr_ant4_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_ant4_o_aer + spectxt = 'ant4_o_' + nspectxt = 7 + else if (l_mastercomp .eq. mastercompindx_biog1_c_aer) then + lptr_dum = lptr_biog1_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog1_c_aer + spectxt = 'biog1_c_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog2_c_aer) then + lptr_dum = lptr_biog2_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog2_c_aer + spectxt = 'biog2_c_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog3_c_aer) then + lptr_dum = lptr_biog3_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog3_c_aer + spectxt = 'biog3_c_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog4_c_aer) then + lptr_dum = lptr_biog4_c_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog4_c_aer + spectxt = 'biog4_c_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog1_o_aer) then + lptr_dum = lptr_biog1_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog1_o_aer + spectxt = 'biog1_o_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog2_o_aer) then + lptr_dum = lptr_biog2_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog2_o_aer + spectxt = 'biog2_o_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog3_o_aer) then + lptr_dum = lptr_biog3_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog3_o_aer + spectxt = 'biog3_o_' + nspectxt = 8 + else if (l_mastercomp .eq. mastercompindx_biog4_o_aer) then + lptr_dum = lptr_biog4_o_aer(n,itype,iphase) + mcindx_dum = mastercompindx_biog4_o_aer + spectxt = 'biog4_o_' + nspectxt = 8 + else goto 2500 end if @@ -1824,6 +6553,7 @@ subroutine init_data_mosaic_ptr( is_aerosol ) else if (l_mastercomp .gt. 0) then ll = ncomp_plustracer_dum(isize,iphase) +! Note massptr_aer holds the species type l1, size bin n and is used at many places in movesect and mosaic drydep code massptr_aer(ll,n,itype,iphase) = lptr_dum mastercompptr_aer(ll,itype) = mcindx_dum @@ -1948,6 +6678,178 @@ subroutine init_data_mosaic_ptr( is_aerosol ) write(msg,9350) 'numptr_aer ', & (numptr_aer(n,itype,iphase), n=1,nsize_aer(itype)) call peg_message( lunout, msg ) + write(msg,9350) 'lptr_pcg1_b_c_aer ', & + (lptr_pcg1_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg2_b_c_aer ', & + (lptr_pcg2_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg3_b_c_aer ', & + (lptr_pcg3_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg4_b_c_aer ', & + (lptr_pcg4_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg5_b_c_aer ', & + (lptr_pcg5_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg6_b_c_aer ', & + (lptr_pcg6_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg7_b_c_aer ', & + (lptr_pcg7_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg8_b_c_aer ', & + (lptr_pcg8_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg9_b_c_aer ', & + (lptr_pcg9_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg1_b_o_aer ', & + (lptr_pcg1_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg2_b_o_aer ', & + (lptr_pcg2_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg3_b_o_aer ', & + (lptr_pcg3_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg4_b_o_aer ', & + (lptr_pcg4_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg5_b_o_aer ', & + (lptr_pcg5_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg6_b_o_aer ', & + (lptr_pcg6_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg7_b_o_aer ', & + (lptr_pcg7_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg8_b_o_aer ', & + (lptr_pcg8_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg9_b_o_aer ', & + (lptr_pcg9_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg1_b_c_aer ', & + (lptr_opcg1_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg2_b_c_aer ', & + (lptr_opcg2_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg3_b_c_aer ', & + (lptr_opcg3_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg4_b_c_aer ', & + (lptr_opcg4_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg5_b_c_aer ', & + (lptr_opcg5_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg6_b_c_aer ', & + (lptr_opcg6_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg7_b_c_aer ', & + (lptr_opcg7_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg8_b_c_aer ', & + (lptr_opcg8_b_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg1_b_o_aer ', & + (lptr_opcg1_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg2_b_o_aer ', & + (lptr_opcg2_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg3_b_o_aer ', & + (lptr_opcg3_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg4_b_o_aer ', & + (lptr_opcg4_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg5_b_o_aer ', & + (lptr_opcg5_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg6_b_o_aer ', & + (lptr_opcg6_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg7_b_o_aer ', & + (lptr_opcg7_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg8_b_o_aer ', & + (lptr_opcg8_b_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg1_f_c_aer ', & + (lptr_pcg1_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg2_f_c_aer ', & + (lptr_pcg2_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg3_f_c_aer ', & + (lptr_pcg3_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg4_f_c_aer ', & + (lptr_pcg4_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg5_f_c_aer ', & + (lptr_pcg5_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg6_f_c_aer ', & + (lptr_pcg6_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg7_f_c_aer ', & + (lptr_pcg7_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg8_f_c_aer ', & + (lptr_pcg8_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg9_f_c_aer ', & + (lptr_pcg9_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg1_f_o_aer ', & + (lptr_pcg1_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg2_f_o_aer ', & + (lptr_pcg2_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg3_f_o_aer ', & + (lptr_pcg3_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg4_f_o_aer ', & + (lptr_pcg4_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg5_f_o_aer ', & + (lptr_pcg5_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg6_f_o_aer ', & + (lptr_pcg6_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg7_f_o_aer ', & + (lptr_pcg7_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg8_f_o_aer ', & + (lptr_pcg8_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_pcg9_f_o_aer ', & + (lptr_pcg9_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg1_f_c_aer ', & + (lptr_opcg1_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg2_f_c_aer ', & + (lptr_opcg2_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg3_f_c_aer ', & + (lptr_opcg3_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg4_f_c_aer ', & + (lptr_opcg4_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg5_f_c_aer ', & + (lptr_opcg5_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg6_f_c_aer ', & + (lptr_opcg6_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg7_f_c_aer ', & + (lptr_opcg7_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg8_f_c_aer ', & + (lptr_opcg8_f_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg1_f_o_aer ', & + (lptr_opcg1_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg2_f_o_aer ', & + (lptr_opcg2_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg3_f_o_aer ', & + (lptr_opcg3_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg4_f_o_aer ', & + (lptr_opcg4_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg5_f_o_aer ', & + (lptr_opcg5_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg6_f_o_aer ', & + (lptr_opcg6_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg7_f_o_aer ', & + (lptr_opcg7_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'lptr_opcg8_f_o_aer ', & + (lptr_opcg8_f_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + + write(msg,9350) 'ant1_c_aer ', & + (lptr_ant1_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant2_c_aer ', & + (lptr_ant2_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant3_c_aer ', & + (lptr_ant3_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant4_c_aer ', & + (lptr_ant4_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant1_o_aer ', & + (lptr_ant1_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant2_o_aer ', & + (lptr_ant2_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant3_o_aer ', & + (lptr_ant3_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'ant4_o_aer ', & + (lptr_ant4_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog1_c_aer ', & + (lptr_biog1_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog2_c_aer ', & + (lptr_biog2_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog3_c_aer ', & + (lptr_biog3_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog4_c_aer ', & + (lptr_biog4_c_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog1_o_aer ', & + (lptr_biog1_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog2_o_aer ', & + (lptr_biog2_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog3_o_aer ', & + (lptr_biog3_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + write(msg,9350) 'biog4_o_aer ', & + (lptr_biog4_o_aer(n,itype,iphase), n=1,nsize_aer(itype)) + + call peg_message( lunout, msg ) + do ll = 1, ncomp_plustracer_aer(itype) @@ -1977,6 +6879,92 @@ subroutine init_data_mosaic_ptr( is_aerosol ) y_hysw = 0 y_water = 0 y_num = 0 + y_pcg1_b_c=0 + y_pcg2_b_c=0 + y_pcg3_b_c=0 + y_pcg4_b_c=0 + y_pcg5_b_c=0 + y_pcg6_b_c=0 + y_pcg7_b_c=0 + y_pcg8_b_c=0 + y_pcg9_b_c=0 + y_pcg1_b_o=0 + y_pcg2_b_o=0 + y_pcg3_b_o=0 + y_pcg4_b_o=0 + y_pcg5_b_o=0 + y_pcg6_b_o=0 + y_pcg7_b_o=0 + y_pcg8_b_o=0 + y_pcg9_b_o=0 + y_opcg1_b_c=0 + y_opcg2_b_c=0 + y_opcg3_b_c=0 + y_opcg4_b_c=0 + y_opcg5_b_c=0 + y_opcg6_b_c=0 + y_opcg7_b_c=0 + y_opcg8_b_c=0 + y_opcg1_b_o=0 + y_opcg2_b_o=0 + y_opcg3_b_o=0 + y_opcg4_b_o=0 + y_opcg5_b_o=0 + y_opcg6_b_o=0 + y_opcg7_b_o=0 + y_opcg8_b_o=0 + y_pcg1_f_c=0 + y_pcg2_f_c=0 + y_pcg3_f_c=0 + y_pcg4_f_c=0 + y_pcg5_f_c=0 + y_pcg6_f_c=0 + y_pcg7_f_c=0 + y_pcg8_f_c=0 + y_pcg9_f_c=0 + y_pcg1_f_o=0 + y_pcg2_f_o=0 + y_pcg3_f_o=0 + y_pcg4_f_o=0 + y_pcg5_f_o=0 + y_pcg6_f_o=0 + y_pcg7_f_o=0 + y_pcg8_f_o=0 + y_pcg9_f_o=0 + y_opcg1_f_c=0 + y_opcg2_f_c=0 + y_opcg3_f_c=0 + y_opcg4_f_c=0 + y_opcg5_f_c=0 + y_opcg6_f_c=0 + y_opcg7_f_c=0 + y_opcg8_f_c=0 + y_opcg1_f_o=0 + y_opcg2_f_o=0 + y_opcg3_f_o=0 + y_opcg4_f_o=0 + y_opcg5_f_o=0 + y_opcg6_f_o=0 + y_opcg7_f_o=0 + y_opcg8_f_o=0 + y_ant1_c=0 + y_ant2_c=0 + y_ant3_c=0 + y_ant4_c=0 + y_ant1_o=0 + y_ant2_o=0 + y_ant3_o=0 + y_ant4_o=0 + y_biog1_c=0 + y_biog2_c=0 + y_biog3_c=0 + y_biog4_c=0 + y_biog1_o=0 + y_biog2_o=0 + y_biog3_o=0 + y_biog4_o=0 + + do n = 1, nsize_aer(itype) if (lptr_so4_aer(n,itype,iphase) .ge. p1st) y_so4 = y_so4 + 1 @@ -1993,6 +6981,90 @@ subroutine init_data_mosaic_ptr( is_aerosol ) if (hyswptr_aer(n,itype) .ge. p1st) y_hysw = y_hysw + 1 if (waterptr_aer(n,itype) .ge. p1st) y_water = y_water + 1 if (numptr_aer(n,itype,iphase) .ge. p1st) y_num = y_num + 1 + if (lptr_pcg1_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg1_b_c = y_pcg1_b_c + 1 + if (lptr_pcg2_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg2_b_c = y_pcg2_b_c + 1 + if (lptr_pcg3_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg3_b_c = y_pcg3_b_c + 1 + if (lptr_pcg4_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg4_b_c = y_pcg4_b_c + 1 + if (lptr_pcg5_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg5_b_c = y_pcg5_b_c + 1 + if (lptr_pcg6_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg6_b_c = y_pcg6_b_c + 1 + if (lptr_pcg7_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg7_b_c = y_pcg7_b_c + 1 + if (lptr_pcg8_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg8_b_c = y_pcg8_b_c + 1 + if (lptr_pcg9_b_c_aer(n,itype,iphase) .ge. p1st) y_pcg9_b_c = y_pcg9_b_c + 1 + if (lptr_pcg1_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg1_b_o = y_pcg1_b_o + 1 + if (lptr_pcg2_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg2_b_o = y_pcg2_b_o + 1 + if (lptr_pcg3_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg3_b_o = y_pcg3_b_o + 1 + if (lptr_pcg4_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg4_b_o = y_pcg4_b_o + 1 + if (lptr_pcg5_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg5_b_o = y_pcg5_b_o + 1 + if (lptr_pcg6_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg6_b_o = y_pcg6_b_o + 1 + if (lptr_pcg7_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg7_b_o = y_pcg7_b_o + 1 + if (lptr_pcg8_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg8_b_o = y_pcg8_b_o + 1 + if (lptr_pcg9_b_o_aer(n,itype,iphase) .ge. p1st) y_pcg9_b_o = y_pcg9_b_o + 1 + if (lptr_opcg1_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg1_b_c = y_opcg1_b_c + 1 + if (lptr_opcg2_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg2_b_c = y_opcg2_b_c + 1 + if (lptr_opcg3_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg3_b_c = y_opcg3_b_c + 1 + if (lptr_opcg4_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg4_b_c = y_opcg4_b_c + 1 + if (lptr_opcg5_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg5_b_c = y_opcg5_b_c + 1 + if (lptr_opcg6_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg6_b_c = y_opcg6_b_c + 1 + if (lptr_opcg7_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg7_b_c = y_opcg7_b_c + 1 + if (lptr_opcg8_b_c_aer(n,itype,iphase) .ge. p1st) y_opcg8_b_c = y_opcg8_b_c + 1 + if (lptr_opcg1_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg1_b_o = y_opcg1_b_o + 1 + if (lptr_opcg2_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg2_b_o = y_opcg2_b_o + 1 + if (lptr_opcg3_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg3_b_o = y_opcg3_b_o + 1 + if (lptr_opcg4_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg4_b_o = y_opcg4_b_o + 1 + if (lptr_opcg5_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg5_b_o = y_opcg5_b_o + 1 + if (lptr_opcg6_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg6_b_o = y_opcg6_b_o + 1 + if (lptr_opcg7_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg7_b_o = y_opcg7_b_o + 1 + if (lptr_opcg8_b_o_aer(n,itype,iphase) .ge. p1st) y_opcg8_b_o = y_opcg8_b_o + 1 + if (lptr_pcg1_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg1_f_c = y_pcg1_f_c + 1 + if (lptr_pcg2_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg2_f_c = y_pcg2_f_c + 1 + if (lptr_pcg3_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg3_f_c = y_pcg3_f_c + 1 + if (lptr_pcg4_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg4_f_c = y_pcg4_f_c + 1 + if (lptr_pcg5_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg5_f_c = y_pcg5_f_c + 1 + if (lptr_pcg6_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg6_f_c = y_pcg6_f_c + 1 + if (lptr_pcg7_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg7_f_c = y_pcg7_f_c + 1 + if (lptr_pcg8_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg8_f_c = y_pcg8_f_c + 1 + if (lptr_pcg9_f_c_aer(n,itype,iphase) .ge. p1st) y_pcg9_f_c = y_pcg9_f_c + 1 + if (lptr_pcg1_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg1_f_o = y_pcg1_f_o + 1 + if (lptr_pcg2_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg2_f_o = y_pcg2_f_o + 1 + if (lptr_pcg3_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg3_f_o = y_pcg3_f_o + 1 + if (lptr_pcg4_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg4_f_o = y_pcg4_f_o + 1 + if (lptr_pcg5_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg5_f_o = y_pcg5_f_o + 1 + if (lptr_pcg6_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg6_f_o = y_pcg6_f_o + 1 + if (lptr_pcg7_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg7_f_o = y_pcg7_f_o + 1 + if (lptr_pcg8_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg8_f_o = y_pcg8_f_o + 1 + if (lptr_pcg9_f_o_aer(n,itype,iphase) .ge. p1st) y_pcg9_f_o = y_pcg9_f_o + 1 + if (lptr_opcg1_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg1_f_c = y_opcg1_f_c + 1 + if (lptr_opcg2_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg2_f_c = y_opcg2_f_c + 1 + if (lptr_opcg3_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg3_f_c = y_opcg3_f_c + 1 + if (lptr_opcg4_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg4_f_c = y_opcg4_f_c + 1 + if (lptr_opcg5_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg5_f_c = y_opcg5_f_c + 1 + if (lptr_opcg6_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg6_f_c = y_opcg6_f_c + 1 + if (lptr_opcg7_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg7_f_c = y_opcg7_f_c + 1 + if (lptr_opcg8_f_c_aer(n,itype,iphase) .ge. p1st) y_opcg8_f_c = y_opcg8_f_c + 1 + if (lptr_opcg1_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg1_f_o = y_opcg1_f_o + 1 + if (lptr_opcg2_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg2_f_o = y_opcg2_f_o + 1 + if (lptr_opcg3_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg3_f_o = y_opcg3_f_o + 1 + if (lptr_opcg4_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg4_f_o = y_opcg4_f_o + 1 + if (lptr_opcg5_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg5_f_o = y_opcg5_f_o + 1 + if (lptr_opcg6_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg6_f_o = y_opcg6_f_o + 1 + if (lptr_opcg7_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg7_f_o = y_opcg7_f_o + 1 + if (lptr_opcg8_f_o_aer(n,itype,iphase) .ge. p1st) y_opcg8_f_o = y_opcg8_f_o + 1 + if (lptr_ant1_c_aer(n,itype,iphase) .ge. p1st) y_ant1_c = y_ant1_c + 1 + if (lptr_ant2_c_aer(n,itype,iphase) .ge. p1st) y_ant2_c = y_ant2_c + 1 + if (lptr_ant3_c_aer(n,itype,iphase) .ge. p1st) y_ant3_c = y_ant3_c + 1 + if (lptr_ant4_c_aer(n,itype,iphase) .ge. p1st) y_ant4_c = y_ant4_c + 1 + if (lptr_ant1_o_aer(n,itype,iphase) .ge. p1st) y_ant1_o = y_ant1_o + 1 + if (lptr_ant2_o_aer(n,itype,iphase) .ge. p1st) y_ant2_o = y_ant2_o + 1 + if (lptr_ant3_o_aer(n,itype,iphase) .ge. p1st) y_ant3_o = y_ant3_o + 1 + if (lptr_ant4_o_aer(n,itype,iphase) .ge. p1st) y_ant4_o = y_ant4_o + 1 + if (lptr_biog1_c_aer(n,itype,iphase) .ge. p1st) y_biog1_c = y_biog1_c + 1 + if (lptr_biog2_c_aer(n,itype,iphase) .ge. p1st) y_biog2_c = y_biog2_c + 1 + if (lptr_biog3_c_aer(n,itype,iphase) .ge. p1st) y_biog3_c = y_biog3_c + 1 + if (lptr_biog4_c_aer(n,itype,iphase) .ge. p1st) y_biog4_c = y_biog4_c + 1 + if (lptr_biog1_o_aer(n,itype,iphase) .ge. p1st) y_biog1_o = y_biog1_o + 1 + if (lptr_biog2_o_aer(n,itype,iphase) .ge. p1st) y_biog2_o = y_biog2_o + 1 + if (lptr_biog3_o_aer(n,itype,iphase) .ge. p1st) y_biog3_o = y_biog3_o + 1 + if (lptr_biog4_o_aer(n,itype,iphase) .ge. p1st) y_biog4_o = y_biog4_o + 1 end do @@ -2023,12 +7095,536 @@ subroutine init_data_mosaic_ptr( is_aerosol ) call peg_message( lunerr, msg ) write(msg,9350) 'phase, type=', iphase,itype call peg_error_fatal( lunerr, msg ) - else if ((y_cl .ne. 0) .and. & - (y_cl .ne. nsize_aer(itype))) then - msg = '*** subr init_data_mosaic_ptr - ptr error for cl' - call peg_message( lunerr, msg ) - write(msg,9350) 'phase, type=', iphase,itype - call peg_error_fatal( lunerr, msg ) + else if ((y_cl .ne. 0) .and. & + (y_cl .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for cl' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_pcg1_b_c .ne. 0) .and. & + (y_pcg1_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg1_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg2_b_c .ne. 0) .and. & + (y_pcg2_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg2_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg3_b_c .ne. 0) .and. & + (y_pcg3_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg3_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg4_b_c .ne. 0) .and. & + (y_pcg4_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg4_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg5_b_c .ne. 0) .and. & + (y_pcg5_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg5_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg6_b_c .ne. 0) .and. & + (y_pcg6_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg6_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg7_b_c .ne. 0) .and. & + (y_pcg7_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg7_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg8_b_c .ne. 0) .and. & + (y_pcg8_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg8_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg9_b_c .ne. 0) .and. & + (y_pcg9_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg9_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg1_b_o .ne. 0) .and. & + (y_pcg1_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg1_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg2_b_o .ne. 0) .and. & + (y_pcg2_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg2_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg3_b_o .ne. 0) .and. & + (y_pcg3_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg3_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg4_b_o .ne. 0) .and. & + (y_pcg4_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg4_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg5_b_o .ne. 0) .and. & + (y_pcg5_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg5_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg6_b_o .ne. 0) .and. & + (y_pcg6_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg6_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg7_b_o .ne. 0) .and. & + (y_pcg7_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg7_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg8_b_o .ne. 0) .and. & + (y_pcg8_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg8_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg9_b_o .ne. 0) .and. & + (y_pcg9_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg9_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg1_b_o .ne. 0) .and. & + (y_opcg1_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg1_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg2_b_o .ne. 0) .and. & + (y_opcg2_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg2_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg3_b_o .ne. 0) .and. & + (y_opcg3_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg3_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg4_b_o .ne. 0) .and. & + (y_opcg4_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg4_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg5_b_o .ne. 0) .and. & + (y_opcg5_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg5_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg6_b_o .ne. 0) .and. & + (y_opcg6_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg6_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg7_b_o .ne. 0) .and. & + (y_opcg7_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg7_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg8_b_o .ne. 0) .and. & + (y_opcg8_b_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg8_b_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg1_b_c .ne. 0) .and. & + (y_opcg1_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg1_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg2_b_c .ne. 0) .and. & + (y_opcg2_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg2_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg3_b_c .ne. 0) .and. & + (y_opcg3_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg3_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg4_b_c .ne. 0) .and. & + (y_opcg4_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg4_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg5_b_c .ne. 0) .and. & + (y_opcg5_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg5_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg6_b_c .ne. 0) .and. & + (y_opcg6_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg6_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg7_b_c .ne. 0) .and. & + (y_opcg7_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg7_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg8_b_c .ne. 0) .and. & + (y_opcg8_b_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg8_b_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg1_f_c .ne. 0) .and. & + (y_pcg1_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg1_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg2_f_c .ne. 0) .and. & + (y_pcg2_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg2_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg3_f_c .ne. 0) .and. & + (y_pcg3_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg3_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg4_f_c .ne. 0) .and. & + (y_pcg4_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg4_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg5_f_c .ne. 0) .and. & + (y_pcg5_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg5_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg6_f_c .ne. 0) .and. & + (y_pcg6_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg6_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg7_f_c .ne. 0) .and. & + (y_pcg7_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg7_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg8_f_c .ne. 0) .and. & + (y_pcg8_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg8_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg9_f_c .ne. 0) .and. & + (y_pcg9_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg9_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg1_f_o .ne. 0) .and. & + (y_pcg1_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg1_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg2_f_o .ne. 0) .and. & + (y_pcg2_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg2_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg3_f_o .ne. 0) .and. & + (y_pcg3_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg3_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg4_f_o .ne. 0) .and. & + (y_pcg4_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg4_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg5_f_o .ne. 0) .and. & + (y_pcg5_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg5_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg6_f_o .ne. 0) .and. & + (y_pcg6_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg6_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg7_f_o .ne. 0) .and. & + (y_pcg7_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg7_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg8_f_o .ne. 0) .and. & + (y_pcg8_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg8_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_pcg9_f_o .ne. 0) .and. & + (y_pcg9_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for pcg9_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg1_f_o .ne. 0) .and. & + (y_opcg1_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg1_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg2_f_o .ne. 0) .and. & + (y_opcg2_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg2_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg3_f_o .ne. 0) .and. & + (y_opcg3_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg3_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg4_f_o .ne. 0) .and. & + (y_opcg4_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg4_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg5_f_o .ne. 0) .and. & + (y_opcg5_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg5_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg6_f_o .ne. 0) .and. & + (y_opcg6_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg6_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg7_f_o .ne. 0) .and. & + (y_opcg7_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg7_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg8_f_o .ne. 0) .and. & + (y_opcg8_f_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg8_f_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg1_f_c .ne. 0) .and. & + (y_opcg1_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg1_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg2_f_c .ne. 0) .and. & + (y_opcg2_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg2_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg3_f_c .ne. 0) .and. & + (y_opcg3_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg3_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg4_f_c .ne. 0) .and. & + (y_opcg4_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg4_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg5_f_c .ne. 0) .and. & + (y_opcg5_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg5_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg6_f_c .ne. 0) .and. & + (y_opcg6_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg6_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg7_f_c .ne. 0) .and. & + (y_opcg7_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg7_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_opcg8_f_c .ne. 0) .and. & + (y_opcg8_f_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for opcg8_f_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant1_c .ne. 0) .and. & + (y_ant1_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant1_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant2_c .ne. 0) .and. & + (y_ant2_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant2_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant3_c .ne. 0) .and. & + (y_ant3_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant3_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant4_c .ne. 0) .and. & + (y_ant4_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant4_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + + else if ((y_ant1_o .ne. 0) .and. & + (y_ant1_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant1_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant2_o .ne. 0) .and. & + (y_ant2_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant2_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant3_o .ne. 0) .and. & + (y_ant3_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant3_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_ant4_o .ne. 0) .and. & + (y_ant4_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for ant4_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog1_c .ne. 0) .and. & + (y_biog1_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog1_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog2_c .ne. 0) .and. & + (y_biog2_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog2_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog3_c .ne. 0) .and. & + (y_biog3_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog3_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog4_c .ne. 0) .and. & + (y_biog4_c .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog4_c' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + + else if ((y_biog1_o .ne. 0) .and. & + (y_biog1_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog1_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog2_o .ne. 0) .and. & + (y_biog2_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog2_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog3_o .ne. 0) .and. & + (y_biog3_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog3_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + + else if ((y_biog4_o .ne. 0) .and. & + (y_biog4_o .ne. nsize_aer(itype))) then + msg = '*** subr init_data_mosaic_ptr - ptr error for biog4_o' + call peg_message( lunerr, msg ) + write(msg,9350) 'phase, type=', iphase,itype + call peg_error_fatal( lunerr, msg ) + else if ((y_msa .ne. 0) .and. & (y_msa .ne. nsize_aer(itype))) then msg = '*** subr init_data_mosaic_ptr - ptr error for msa' @@ -2091,18 +7687,282 @@ subroutine init_data_mosaic_ptr( is_aerosol ) ! set pointers for gases ! rce 2004-dec-02 - gases not required to be present ! - if (p_sulf .ge. p1st) then - kh2so4 = p_sulf + if (p_h2so4 .ge. p1st) then + kh2so4 = p_h2so4 + + elseif (p_sulf .ge. p1st) then + kh2so4 = p_sulf + + ! else ! msg = '*** subr init_data_mosaic_ptr - ptr error for h2so4' ! call peg_error_fatal( lunerr, msg ) end if if (p_hno3 .ge. p1st) then khno3 = p_hno3 + endif + if (p_pcg1_b_c .ge. p1st) then + kpcg1_b_c = p_pcg1_b_c + endif + if (p_pcg2_b_c .ge. p1st) then + kpcg2_b_c = p_pcg2_b_c + endif + if (p_pcg3_b_c .ge. p1st) then + kpcg3_b_c = p_pcg3_b_c + endif + if (p_pcg4_b_c .ge. p1st) then + kpcg4_b_c = p_pcg4_b_c + endif + if (p_pcg5_b_c .ge. p1st) then + kpcg5_b_c = p_pcg5_b_c + endif + if (p_pcg6_b_c .ge. p1st) then + kpcg6_b_c = p_pcg6_b_c + endif + if (p_pcg7_b_c .ge. p1st) then + kpcg7_b_c = p_pcg7_b_c + endif + if (p_pcg8_b_c .ge. p1st) then + kpcg8_b_c = p_pcg8_b_c + endif + if (p_pcg9_b_c .ge. p1st) then + kpcg9_b_c = p_pcg9_b_c + endif + if (p_pcg1_b_o .ge. p1st) then + kpcg1_b_o = p_pcg1_b_o + endif + if (p_pcg2_b_o .ge. p1st) then + kpcg2_b_o = p_pcg2_b_o + endif + if (p_pcg3_b_o .ge. p1st) then + kpcg3_b_o = p_pcg3_b_o + endif + if (p_pcg4_b_o .ge. p1st) then + kpcg4_b_o = p_pcg4_b_o + endif + if (p_pcg5_b_o .ge. p1st) then + kpcg5_b_o = p_pcg5_b_o + endif + if (p_pcg6_b_o .ge. p1st) then + kpcg6_b_o = p_pcg6_b_o + endif + if (p_pcg7_b_o .ge. p1st) then + kpcg7_b_o = p_pcg7_b_o + endif + if (p_pcg8_b_o .ge. p1st) then + kpcg8_b_o = p_pcg8_b_o + endif + if (p_pcg9_b_o .ge. p1st) then + kpcg9_b_o = p_pcg9_b_o + endif + if (p_opcg1_b_o .ge. p1st) then + kopcg1_b_o = p_opcg1_b_o + endif + if (p_opcg2_b_o .ge. p1st) then + kopcg2_b_o = p_opcg2_b_o + endif + if (p_opcg3_b_o .ge. p1st) then + kopcg3_b_o = p_opcg3_b_o + endif + if (p_opcg4_b_o .ge. p1st) then + kopcg4_b_o = p_opcg4_b_o + endif + if (p_opcg5_b_o .ge. p1st) then + kopcg5_b_o = p_opcg5_b_o + endif + if (p_opcg6_b_o .ge. p1st) then + kopcg6_b_o = p_opcg6_b_o + endif + if (p_opcg7_b_o .ge. p1st) then + kopcg7_b_o = p_opcg7_b_o + endif + if (p_opcg8_b_o .ge. p1st) then + kopcg8_b_o = p_opcg8_b_o + endif + if (p_opcg1_b_c .ge. p1st) then + kopcg1_b_c = p_opcg1_b_c + endif + if (p_opcg2_b_c .ge. p1st) then + kopcg2_b_c = p_opcg2_b_c + endif + if (p_opcg3_b_c .ge. p1st) then + kopcg3_b_c = p_opcg3_b_c + endif + if (p_opcg4_b_c .ge. p1st) then + kopcg4_b_c = p_opcg4_b_c + endif + if (p_opcg5_b_c .ge. p1st) then + kopcg5_b_c = p_opcg5_b_c + endif + if (p_opcg6_b_c .ge. p1st) then + kopcg6_b_c = p_opcg6_b_c + endif + if (p_opcg7_b_c .ge. p1st) then + kopcg7_b_c = p_opcg7_b_c + endif + if (p_opcg8_b_c .ge. p1st) then + kopcg8_b_c = p_opcg8_b_c + endif + if (p_pcg1_f_c .ge. p1st) then + kpcg1_f_c = p_pcg1_f_c + endif + if (p_pcg2_f_c .ge. p1st) then + kpcg2_f_c = p_pcg2_f_c + endif + if (p_pcg3_f_c .ge. p1st) then + kpcg3_f_c = p_pcg3_f_c + endif + if (p_pcg4_f_c .ge. p1st) then + kpcg4_f_c = p_pcg4_f_c + endif + if (p_pcg5_f_c .ge. p1st) then + kpcg5_f_c = p_pcg5_f_c + endif + if (p_pcg6_f_c .ge. p1st) then + kpcg6_f_c = p_pcg6_f_c + endif + if (p_pcg7_f_c .ge. p1st) then + kpcg7_f_c = p_pcg7_f_c + endif + if (p_pcg8_f_c .ge. p1st) then + kpcg8_f_c = p_pcg8_f_c + endif + if (p_pcg9_f_c .ge. p1st) then + kpcg9_f_c = p_pcg9_f_c + endif + if (p_pcg1_f_o .ge. p1st) then + kpcg1_f_o = p_pcg1_f_o + endif + if (p_pcg2_f_o .ge. p1st) then + kpcg2_f_o = p_pcg2_f_o + endif + if (p_pcg3_f_o .ge. p1st) then + kpcg3_f_o = p_pcg3_f_o + endif + if (p_pcg4_f_o .ge. p1st) then + kpcg4_f_o = p_pcg4_f_o + endif + if (p_pcg5_f_o .ge. p1st) then + kpcg5_f_o = p_pcg5_f_o + endif + if (p_pcg6_f_o .ge. p1st) then + kpcg6_f_o = p_pcg6_f_o + endif + if (p_pcg7_f_o .ge. p1st) then + kpcg7_f_o = p_pcg7_f_o + endif + if (p_pcg8_f_o .ge. p1st) then + kpcg8_f_o = p_pcg8_f_o + endif + if (p_pcg9_f_o .ge. p1st) then + kpcg9_f_o = p_pcg9_f_o + endif + if (p_opcg1_f_o .ge. p1st) then + kopcg1_f_o = p_opcg1_f_o + endif + if (p_opcg2_f_o .ge. p1st) then + kopcg2_f_o = p_opcg2_f_o + endif + if (p_opcg3_f_o .ge. p1st) then + kopcg3_f_o = p_opcg3_f_o + endif + if (p_opcg4_f_o .ge. p1st) then + kopcg4_f_o = p_opcg4_f_o + endif + if (p_opcg5_f_o .ge. p1st) then + kopcg5_f_o = p_opcg5_f_o + endif + if (p_opcg6_f_o .ge. p1st) then + kopcg6_f_o = p_opcg6_f_o + endif + if (p_opcg7_f_o .ge. p1st) then + kopcg7_f_o = p_opcg7_f_o + endif + if (p_opcg8_f_o .ge. p1st) then + kopcg8_f_o = p_opcg8_f_o + endif + if (p_opcg1_f_c .ge. p1st) then + kopcg1_f_c = p_opcg1_f_c + endif + if (p_opcg2_f_c .ge. p1st) then + kopcg2_f_c = p_opcg2_f_c + endif + if (p_opcg3_f_c .ge. p1st) then + kopcg3_f_c = p_opcg3_f_c + endif + if (p_opcg4_f_c .ge. p1st) then + kopcg4_f_c = p_opcg4_f_c + endif + if (p_opcg5_f_c .ge. p1st) then + kopcg5_f_c = p_opcg5_f_c + endif + if (p_opcg6_f_c .ge. p1st) then + kopcg6_f_c = p_opcg6_f_c + endif + if (p_opcg7_f_c .ge. p1st) then + kopcg7_f_c = p_opcg7_f_c + endif + if (p_opcg8_f_c .ge. p1st) then + kopcg8_f_c = p_opcg8_f_c + endif + + if (p_ant1_c .ge. p1st) then + kant1_c = p_ant1_c + endif + + if (p_ant2_c .ge. p1st) then + kant2_c = p_ant2_c + endif + if (p_ant3_c .ge. p1st) then + kant3_c = p_ant3_c + endif + if (p_ant4_c .ge. p1st) then + kant4_c = p_ant4_c + endif + if (p_ant1_o .ge. p1st) then + kant1_o = p_ant1_o + endif + + if (p_ant2_o .ge. p1st) then + kant2_o = p_ant2_o + endif + if (p_ant3_o .ge. p1st) then + kant3_o = p_ant3_o + endif + if (p_ant4_o .ge. p1st) then + kant4_o = p_ant4_o + endif + + if (p_biog1_c .ge. p1st) then + kbiog1_c = p_biog1_c + endif + + if (p_biog2_c .ge. p1st) then + kbiog2_c = p_biog2_c + endif + if (p_biog3_c .ge. p1st) then + kbiog3_c = p_biog3_c + endif + if (p_biog4_c .ge. p1st) then + kbiog4_c = p_biog4_c + endif + if (p_biog1_o .ge. p1st) then + kbiog1_o = p_biog1_o + endif + + if (p_biog2_o .ge. p1st) then + kbiog2_o = p_biog2_o + endif + if (p_biog3_o .ge. p1st) then + kbiog3_o = p_biog3_o + endif + if (p_biog4_o .ge. p1st) then + kbiog4_o = p_biog4_o + endif + ! else ! msg = '*** subr init_data_mosaic_ptr - ptr error for hno3' ! call peg_error_fatal( lunerr, msg ) - end if if (p_hcl .ge. p1st) then khcl = p_hcl ! else @@ -2128,7 +7988,6 @@ subroutine init_data_mosaic_ptr( is_aerosol ) if (p_so2 .ge. p1st) kso2 = p_so2 if (p_h2o2 .ge. p1st) kh2o2 = p_h2o2 if (p_hcho .ge. p1st) khcho = p_hcho - if (p_ora1 .ge. p1st) khcooh = p_ora1 if (p_ho .ge. p1st) koh = p_ho if (p_ho2 .ge. p1st) kho2 = p_ho2 if (p_no3 .ge. p1st) kno3 = p_no3 @@ -2136,9 +7995,6 @@ subroutine init_data_mosaic_ptr( is_aerosol ) if (p_no2 .ge. p1st) kno2 = p_no2 if (p_hono .ge. p1st) khono = p_hono if (p_pan .ge. p1st) kpan = p_pan - if (p_ch3o2 .ge. p1st) kch3o2 = p_ch3o2 - if (p_ch3oh .ge. p1st) kch3oh = p_ch3oh - if (p_op1 .ge. p1st) kch3ooh = p_op1 ! ! calc ltot, ltot2, kh2o, ktemp @@ -2153,7 +8009,6 @@ subroutine init_data_mosaic_ptr( is_aerosol ) ltot = max( ltot, kso2 ) ltot = max( ltot, kh2o2 ) ltot = max( ltot, khcho ) - ltot = max( ltot, khcooh ) ltot = max( ltot, koh ) ltot = max( ltot, kho2 ) ltot = max( ltot, kno3 ) @@ -2161,9 +8016,91 @@ subroutine init_data_mosaic_ptr( is_aerosol ) ltot = max( ltot, kno2 ) ltot = max( ltot, khono ) ltot = max( ltot, kpan ) - ltot = max( ltot, kch3o2 ) - ltot = max( ltot, kch3oh ) - ltot = max( ltot, kch3ooh ) + ltot = max( ltot, kpcg1_b_c ) + ltot = max( ltot, kpcg2_b_c ) + ltot = max( ltot, kpcg3_b_c ) + ltot = max( ltot, kpcg4_b_c ) + ltot = max( ltot, kpcg5_b_c ) + ltot = max( ltot, kpcg6_b_c ) + ltot = max( ltot, kpcg7_b_c ) + ltot = max( ltot, kpcg8_b_c ) + ltot = max( ltot, kpcg9_b_c ) + ltot = max( ltot, kpcg1_b_o ) + ltot = max( ltot, kpcg2_b_o ) + ltot = max( ltot, kpcg3_b_o ) + ltot = max( ltot, kpcg4_b_o ) + ltot = max( ltot, kpcg5_b_o ) + ltot = max( ltot, kpcg6_b_o ) + ltot = max( ltot, kpcg7_b_o ) + ltot = max( ltot, kpcg8_b_o ) + ltot = max( ltot, kpcg9_b_o ) + ltot = max( ltot, kopcg1_b_c ) + ltot = max( ltot, kopcg2_b_c ) + ltot = max( ltot, kopcg3_b_c ) + ltot = max( ltot, kopcg4_b_c ) + ltot = max( ltot, kopcg5_b_c ) + ltot = max( ltot, kopcg6_b_c ) + ltot = max( ltot, kopcg7_b_c ) + ltot = max( ltot, kopcg8_b_c ) + ltot = max( ltot, kopcg1_b_o ) + ltot = max( ltot, kopcg2_b_o ) + ltot = max( ltot, kopcg3_b_o ) + ltot = max( ltot, kopcg4_b_o ) + ltot = max( ltot, kopcg5_b_o ) + ltot = max( ltot, kopcg6_b_o ) + ltot = max( ltot, kopcg7_b_o ) + ltot = max( ltot, kopcg8_b_o ) + ltot = max( ltot, kpcg1_f_c ) + ltot = max( ltot, kpcg2_f_c ) + ltot = max( ltot, kpcg3_f_c ) + ltot = max( ltot, kpcg4_f_c ) + ltot = max( ltot, kpcg5_f_c ) + ltot = max( ltot, kpcg6_f_c ) + ltot = max( ltot, kpcg7_f_c ) + ltot = max( ltot, kpcg8_f_c ) + ltot = max( ltot, kpcg9_f_c ) + ltot = max( ltot, kpcg1_f_o ) + ltot = max( ltot, kpcg2_f_o ) + ltot = max( ltot, kpcg3_f_o ) + ltot = max( ltot, kpcg4_f_o ) + ltot = max( ltot, kpcg5_f_o ) + ltot = max( ltot, kpcg6_f_o ) + ltot = max( ltot, kpcg7_f_o ) + ltot = max( ltot, kpcg8_f_o ) + ltot = max( ltot, kpcg9_f_o ) + ltot = max( ltot, kopcg1_f_c ) + ltot = max( ltot, kopcg2_f_c ) + ltot = max( ltot, kopcg3_f_c ) + ltot = max( ltot, kopcg4_f_c ) + ltot = max( ltot, kopcg5_f_c ) + ltot = max( ltot, kopcg6_f_c ) + ltot = max( ltot, kopcg7_f_c ) + ltot = max( ltot, kopcg8_f_c ) + ltot = max( ltot, kopcg1_f_o ) + ltot = max( ltot, kopcg2_f_o ) + ltot = max( ltot, kopcg3_f_o ) + ltot = max( ltot, kopcg4_f_o ) + ltot = max( ltot, kopcg5_f_o ) + ltot = max( ltot, kopcg6_f_o ) + ltot = max( ltot, kopcg7_f_o ) + ltot = max( ltot, kopcg8_f_o ) + ltot = max( ltot, kant1_c ) + ltot = max( ltot, kant2_c ) + ltot = max( ltot, kant3_c ) + ltot = max( ltot, kant4_c ) + ltot = max( ltot, kant1_o ) + ltot = max( ltot, kant2_o ) + ltot = max( ltot, kant3_o ) + ltot = max( ltot, kant4_o ) + ltot = max( ltot, kbiog1_c ) + ltot = max( ltot, kbiog2_c ) + ltot = max( ltot, kbiog3_c ) + ltot = max( ltot, kbiog4_c ) + ltot = max( ltot, kbiog1_o ) + ltot = max( ltot, kbiog2_o ) + ltot = max( ltot, kbiog3_o ) + ltot = max( ltot, kbiog4_o ) + do iphase=1,nphase_aer do itype=1,ntype_aer do n = 1, nsize_aer(itype) @@ -2196,15 +8133,102 @@ subroutine init_data_mosaic_ptr( is_aerosol ) call peg_error_fatal( lunerr, msg ) end if - if (p_sulf .ge. p1st) name(kh2so4 ) = 'h2so4' + if (p_h2so4 .ge. p1st)then + name(kh2so4 ) = 'h2so4' + elseif (p_sulf .ge. p1st) then + name(kh2so4 ) = 'h2so4' + endif if (p_hno3 .ge. p1st) name(khno3 ) = 'hno3' + if (p_pcg1_b_c .ge. p1st) name(kpcg1_b_c ) = 'pcg1_b_c' + if (p_pcg2_b_c .ge. p1st) name(kpcg2_b_c ) = 'pcg2_b_c' + if (p_pcg3_b_c .ge. p1st) name(kpcg3_b_c ) = 'pcg3_b_c' + if (p_pcg4_b_c .ge. p1st) name(kpcg4_b_c ) = 'pcg4_b_c' + if (p_pcg5_b_c .ge. p1st) name(kpcg5_b_c ) = 'pcg5_b_c' + if (p_pcg6_b_c .ge. p1st) name(kpcg6_b_c ) = 'pcg6_b_c' + if (p_pcg7_b_c .ge. p1st) name(kpcg7_b_c ) = 'pcg7_b_c' + if (p_pcg8_b_c .ge. p1st) name(kpcg8_b_c ) = 'pcg8_b_c' + if (p_pcg9_b_c .ge. p1st) name(kpcg9_b_c ) = 'pcg9_b_c' + if (p_pcg1_b_o .ge. p1st) name(kpcg1_b_o ) = 'pcg1_b_o' + if (p_pcg2_b_o .ge. p1st) name(kpcg2_b_o ) = 'pcg2_b_o' + if (p_pcg3_b_o .ge. p1st) name(kpcg3_b_o ) = 'pcg3_b_o' + if (p_pcg4_b_o .ge. p1st) name(kpcg4_b_o ) = 'pcg4_b_o' + if (p_pcg5_b_o .ge. p1st) name(kpcg5_b_o ) = 'pcg5_b_o' + if (p_pcg6_b_o .ge. p1st) name(kpcg6_b_o ) = 'pcg6_b_o' + if (p_pcg7_b_o .ge. p1st) name(kpcg7_b_o ) = 'pcg7_b_o' + if (p_pcg8_b_o .ge. p1st) name(kpcg8_b_o ) = 'pcg8_b_o' + if (p_pcg9_b_o .ge. p1st) name(kpcg9_b_o ) = 'pcg9_b_o' + if (p_opcg1_b_c .ge. p1st) name(kopcg1_b_c ) = 'opcg1_b_c' + if (p_opcg2_b_c .ge. p1st) name(kopcg2_b_c ) = 'opcg2_b_c' + if (p_opcg3_b_c .ge. p1st) name(kopcg3_b_c ) = 'opcg3_b_c' + if (p_opcg4_b_c .ge. p1st) name(kopcg4_b_c ) = 'opcg4_b_c' + if (p_opcg5_b_c .ge. p1st) name(kopcg5_b_c ) = 'opcg5_b_c' + if (p_opcg6_b_c .ge. p1st) name(kopcg6_b_c ) = 'opcg6_b_c' + if (p_opcg7_b_c .ge. p1st) name(kopcg7_b_c ) = 'opcg7_b_c' + if (p_opcg8_b_c .ge. p1st) name(kopcg8_b_c ) = 'opcg8_b_c' + if (p_opcg1_b_o .ge. p1st) name(kopcg1_b_o ) = 'opcg1_b_o' + if (p_opcg2_b_o .ge. p1st) name(kopcg2_b_o ) = 'opcg2_b_o' + if (p_opcg3_b_o .ge. p1st) name(kopcg3_b_o ) = 'opcg3_b_o' + if (p_opcg4_b_o .ge. p1st) name(kopcg4_b_o ) = 'opcg4_b_o' + if (p_opcg5_b_o .ge. p1st) name(kopcg5_b_o ) = 'opcg5_b_o' + if (p_opcg6_b_o .ge. p1st) name(kopcg6_b_o ) = 'opcg6_b_o' + if (p_opcg7_b_o .ge. p1st) name(kopcg7_b_o ) = 'opcg7_b_o' + if (p_opcg8_b_o .ge. p1st) name(kopcg8_b_o ) = 'opcg8_b_o' + if (p_pcg1_f_c .ge. p1st) name(kpcg1_f_c ) = 'pcg1_f_c' + if (p_pcg2_f_c .ge. p1st) name(kpcg2_f_c ) = 'pcg2_f_c' + if (p_pcg3_f_c .ge. p1st) name(kpcg3_f_c ) = 'pcg3_f_c' + if (p_pcg4_f_c .ge. p1st) name(kpcg4_f_c ) = 'pcg4_f_c' + if (p_pcg5_f_c .ge. p1st) name(kpcg5_f_c ) = 'pcg5_f_c' + if (p_pcg6_f_c .ge. p1st) name(kpcg6_f_c ) = 'pcg6_f_c' + if (p_pcg7_f_c .ge. p1st) name(kpcg7_f_c ) = 'pcg7_f_c' + if (p_pcg8_f_c .ge. p1st) name(kpcg8_f_c ) = 'pcg8_f_c' + if (p_pcg9_f_c .ge. p1st) name(kpcg9_f_c ) = 'pcg9_f_c' + if (p_pcg1_f_o .ge. p1st) name(kpcg1_f_o ) = 'pcg1_f_o' + if (p_pcg2_f_o .ge. p1st) name(kpcg2_f_o ) = 'pcg2_f_o' + if (p_pcg3_f_o .ge. p1st) name(kpcg3_f_o ) = 'pcg3_f_o' + if (p_pcg4_f_o .ge. p1st) name(kpcg4_f_o ) = 'pcg4_f_o' + if (p_pcg5_f_o .ge. p1st) name(kpcg5_f_o ) = 'pcg5_f_o' + if (p_pcg6_f_o .ge. p1st) name(kpcg6_f_o ) = 'pcg6_f_o' + if (p_pcg7_f_o .ge. p1st) name(kpcg7_f_o ) = 'pcg7_f_o' + if (p_pcg8_f_o .ge. p1st) name(kpcg8_f_o ) = 'pcg8_f_o' + if (p_pcg9_f_o .ge. p1st) name(kpcg9_f_o ) = 'pcg9_f_o' + if (p_opcg1_f_c .ge. p1st) name(kopcg1_f_c ) = 'opcg1_f_c' + if (p_opcg2_f_c .ge. p1st) name(kopcg2_f_c ) = 'opcg2_f_c' + if (p_opcg3_f_c .ge. p1st) name(kopcg3_f_c ) = 'opcg3_f_c' + if (p_opcg4_f_c .ge. p1st) name(kopcg4_f_c ) = 'opcg4_f_c' + if (p_opcg5_f_c .ge. p1st) name(kopcg5_f_c ) = 'opcg5_f_c' + if (p_opcg6_f_c .ge. p1st) name(kopcg6_f_c ) = 'opcg6_f_c' + if (p_opcg7_f_c .ge. p1st) name(kopcg7_f_c ) = 'opcg7_f_c' + if (p_opcg8_f_c .ge. p1st) name(kopcg8_f_c ) = 'opcg8_f_c' + if (p_opcg1_f_o .ge. p1st) name(kopcg1_f_o ) = 'opcg1_f_o' + if (p_opcg2_f_o .ge. p1st) name(kopcg2_f_o ) = 'opcg2_f_o' + if (p_opcg3_f_o .ge. p1st) name(kopcg3_f_o ) = 'opcg3_f_o' + if (p_opcg4_f_o .ge. p1st) name(kopcg4_f_o ) = 'opcg4_f_o' + if (p_opcg5_f_o .ge. p1st) name(kopcg5_f_o ) = 'opcg5_f_o' + if (p_opcg6_f_o .ge. p1st) name(kopcg6_f_o ) = 'opcg6_f_o' + if (p_opcg7_f_o .ge. p1st) name(kopcg7_f_o ) = 'opcg7_f_o' + if (p_opcg8_f_o .ge. p1st) name(kopcg8_f_o ) = 'opcg8_f_o' + if (p_ant1_c .ge. p1st) name(kant1_c ) = 'ant1_c' + if (p_ant2_c .ge. p1st) name(kant2_c ) = 'ant2_c' + if (p_ant3_c .ge. p1st) name(kant3_c ) = 'ant3_c' + if (p_ant4_c .ge. p1st) name(kant4_c ) = 'ant4_c' + if (p_ant1_o .ge. p1st) name(kant1_o ) = 'ant1_o' + if (p_ant2_o .ge. p1st) name(kant2_o ) = 'ant2_o' + if (p_ant3_o .ge. p1st) name(kant3_o ) = 'ant3_o' + if (p_ant4_o .ge. p1st) name(kant4_o ) = 'ant4_o' + if (p_biog1_c .ge. p1st) name(kbiog1_c ) = 'biog1_c' + if (p_biog2_c .ge. p1st) name(kbiog2_c ) = 'biog2_c' + if (p_biog3_c .ge. p1st) name(kbiog3_c ) = 'biog3_c' + if (p_biog4_c .ge. p1st) name(kbiog4_c ) = 'biog4_c' + if (p_biog1_o .ge. p1st) name(kbiog1_o ) = 'biog1_o' + if (p_biog2_o .ge. p1st) name(kbiog2_o ) = 'biog2_o' + if (p_biog3_o .ge. p1st) name(kbiog3_o ) = 'biog3_o' + if (p_biog4_o .ge. p1st) name(kbiog4_o ) = 'biog4_o' if (p_hcl .ge. p1st) name(khcl ) = 'hcl' if (p_nh3 .ge. p1st) name(knh3 ) = 'nh3' if (p_o3 .ge. p1st) name(ko3 ) = 'o3' if (p_so2 .ge. p1st) name(kso2 ) = 'so2' if (p_h2o2 .ge. p1st) name(kh2o2 ) = 'h2o2' if (p_hcho .ge. p1st) name(khcho ) = 'hcho' - if (p_ora1 .ge. p1st) name(khcooh ) = 'hcooh' if (p_ho .ge. p1st) name(koh ) = 'oh' if (p_ho2 .ge. p1st) name(kho2 ) = 'ho2' if (p_no3 .ge. p1st) name(kno3 ) = 'no3' @@ -2212,9 +8236,6 @@ subroutine init_data_mosaic_ptr( is_aerosol ) if (p_no2 .ge. p1st) name(kno2 ) = 'no2' if (p_hono .ge. p1st) name(khono ) = 'hono' if (p_pan .ge. p1st) name(kpan ) = 'pan' - if (p_ch3o2 .ge. p1st) name(kch3o2 ) = 'ch3o2' - if (p_ch3oh .ge. p1st) name(kch3oh ) = 'ch3oh' - if (p_op1 .ge. p1st) name(kch3ooh) = 'ch3ooh' name(ktemp) = 'temp' name(kh2o) = 'h2o' @@ -2313,7 +8334,52 @@ subroutine aerchem_debug_dump( & lptr_co3_aer(n,itype,iphase), lptr_nh4_aer(n,itype,iphase), & lptr_na_aer(n,itype,iphase), lptr_ca_aer(n,itype,iphase), & lptr_oin_aer(n,itype,iphase), lptr_oc_aer(n,itype,iphase), & - lptr_bc_aer(n,itype,iphase), hyswptr_aer(n,itype) + lptr_bc_aer(n,itype,iphase), hyswptr_aer(n,itype), & + lptr_pcg1_b_c_aer(n,itype,iphase), lptr_pcg2_b_c_aer(n,itype,iphase),& + lptr_pcg3_b_c_aer(n,itype,iphase), lptr_pcg4_b_c_aer(n,itype,iphase),& + lptr_pcg5_b_c_aer(n,itype,iphase), lptr_pcg6_b_c_aer(n,itype,iphase),& + lptr_pcg7_b_c_aer(n,itype,iphase), lptr_pcg8_b_c_aer(n,itype,iphase),& + lptr_pcg9_b_c_aer(n,itype,iphase), lptr_pcg1_b_o_aer(n,itype,iphase),& + lptr_pcg2_b_o_aer(n,itype,iphase), lptr_pcg3_b_o_aer(n,itype,iphase), & + lptr_pcg4_b_o_aer(n,itype,iphase), lptr_pcg5_b_o_aer(n,itype,iphase), & + lptr_pcg6_b_o_aer(n,itype,iphase), lptr_pcg7_b_o_aer(n,itype,iphase), & + lptr_pcg8_b_o_aer(n,itype,iphase), lptr_pcg9_b_o_aer(n,itype,iphase), & + lptr_opcg1_b_c_aer(n,itype,iphase),& + lptr_opcg2_b_c_aer(n,itype,iphase), lptr_opcg3_b_c_aer(n,itype,iphase),& + lptr_opcg4_b_c_aer(n,itype,iphase), lptr_opcg5_b_c_aer(n,itype,iphase),& + lptr_opcg6_b_c_aer(n,itype,iphase), lptr_opcg7_b_c_aer(n,itype,iphase),& + lptr_opcg8_b_c_aer(n,itype,iphase), lptr_opcg1_b_o_aer(n,itype,iphase),& + lptr_opcg2_b_o_aer(n,itype,iphase), lptr_opcg3_b_o_aer(n,itype,iphase),& + lptr_opcg4_b_o_aer(n,itype,iphase), lptr_opcg5_b_o_aer(n,itype,iphase),& + lptr_opcg6_b_o_aer(n,itype,iphase), lptr_opcg7_b_o_aer(n,itype,iphase),& + lptr_opcg8_b_o_aer(n,itype,iphase), & + lptr_pcg1_f_c_aer(n,itype,iphase), lptr_pcg2_f_c_aer(n,itype,iphase),& + lptr_pcg3_f_c_aer(n,itype,iphase), lptr_pcg4_f_c_aer(n,itype,iphase),& + lptr_pcg5_f_c_aer(n,itype,iphase), lptr_pcg6_f_c_aer(n,itype,iphase),& + lptr_pcg7_f_c_aer(n,itype,iphase), lptr_pcg8_f_c_aer(n,itype,iphase),& + lptr_pcg9_f_c_aer(n,itype,iphase), lptr_pcg1_f_o_aer(n,itype,iphase),& + lptr_pcg2_f_o_aer(n,itype,iphase), lptr_pcg3_f_o_aer(n,itype,iphase), & + lptr_pcg4_f_o_aer(n,itype,iphase), lptr_pcg5_f_o_aer(n,itype,iphase), & + lptr_pcg6_f_o_aer(n,itype,iphase), lptr_pcg7_f_o_aer(n,itype,iphase), & + lptr_pcg8_f_o_aer(n,itype,iphase), lptr_pcg9_f_o_aer(n,itype,iphase), & + lptr_opcg1_f_c_aer(n,itype,iphase),& + lptr_opcg2_f_c_aer(n,itype,iphase), lptr_opcg3_f_c_aer(n,itype,iphase),& + lptr_opcg4_f_c_aer(n,itype,iphase), lptr_opcg5_f_c_aer(n,itype,iphase),& + lptr_opcg6_f_c_aer(n,itype,iphase), lptr_opcg7_f_c_aer(n,itype,iphase),& + lptr_opcg8_f_c_aer(n,itype,iphase), lptr_opcg1_f_o_aer(n,itype,iphase),& + lptr_opcg2_f_o_aer(n,itype,iphase), lptr_opcg3_f_o_aer(n,itype,iphase),& + lptr_opcg4_f_o_aer(n,itype,iphase), lptr_opcg5_f_o_aer(n,itype,iphase),& + lptr_opcg6_f_o_aer(n,itype,iphase), lptr_opcg7_f_o_aer(n,itype,iphase),& + lptr_opcg8_f_o_aer(n,itype,iphase), & + lptr_ant1_c_aer(n,itype,iphase),lptr_ant2_c_aer(n,itype,iphase), & + lptr_ant3_c_aer(n,itype,iphase),lptr_ant4_c_aer(n,itype,iphase), & + lptr_ant1_o_aer(n,itype,iphase),lptr_ant2_o_aer(n,itype,iphase), & + lptr_ant3_o_aer(n,itype,iphase),lptr_ant4_o_aer(n,itype,iphase), & + lptr_biog1_c_aer(n,itype,iphase),lptr_biog2_c_aer(n,itype,iphase), & + lptr_biog3_c_aer(n,itype,iphase),lptr_biog4_c_aer(n,itype,iphase), & + lptr_biog1_o_aer(n,itype,iphase),lptr_biog2_o_aer(n,itype,iphase), & + lptr_biog3_o_aer(n,itype,iphase),lptr_biog4_o_aer(n,itype,iphase) + end do ! size end do ! type end do ! phase diff --git a/chem/module_mosaic_drydep.F b/chem/module_mosaic_drydep.F index e040a30ae5..768daef8a3 100644 --- a/chem/module_mosaic_drydep.F +++ b/chem/module_mosaic_drydep.F @@ -77,6 +77,7 @@ subroutine mosaic_drydep_driver( & dimension( its:ite, jts:jte, 1:num_chem ) :: & ddvel + type(grid_config_rec_type), intent(in) :: config_flags diff --git a/chem/module_mosaic_movesect.F b/chem/module_mosaic_movesect.F index 2463221398..7125bbe465 100644 --- a/chem/module_mosaic_movesect.F +++ b/chem/module_mosaic_movesect.F @@ -144,6 +144,7 @@ subroutine move_sections( iflag, iclm, jclm, k, m) if (ntype_aer .le. 0) return if (nphase_aer .le. 0) return + ! ! run diagnostic tests ! (these will only be run for certain values of idiag_movesect @@ -1543,7 +1544,9 @@ subroutine move_sections_conserve_check( ipass, & llworstb = 0 do ll = 1, ncomp_plustracer_aer(itype)+7 dumtop = thesum(jj+1,ll) - thesum(jj,ll) - dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-35 ) +! dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-35 ) +! change minimum dumbot to 1.0e-30 to reduce unimportant error messages + dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-30 ) dumerr = dumtop/dumbot ! rce 21-jul-2006 - encountered some cases when delta_*_conform1 is negative @@ -1563,7 +1566,8 @@ subroutine move_sections_conserve_check( ipass, & duma = thesum(3,ll) - dumc dumb = thesum(4,ll) - dumc dumtop = dumb - duma - dumbot = max( abs(duma), abs(dumb), 1.0e-35 ) +! dumbot = max( abs(duma), abs(dumb), 1.0e-35 ) + dumbot = max( abs(duma), abs(dumb), 1.0e-30 ) dume = dumtop/dumbot if (abs(dume) .lt. abs(dumerr)) dumerr = dume end if @@ -1602,7 +1606,8 @@ subroutine move_sections_conserve_check( ipass, & (abs(dumworstb) .gt. dumtoler) ) then ll = max( 1, llworstb ) dumtop = thesum(jj+1,ll) - thesum(jj,ll) - dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-35 ) +! dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-35 ) + dumbot = max( abs(thesum(jj,ll)), abs(thesum(jj+1,ll)), 1.0e-30 ) dumerr = dumtop/dumbot write(msg,97130) 'name/relerr/thesum', jj, '/thesum', jj+1, & dumname(ll), dumerr, thesum(jj,ll), thesum(jj+1,ll) diff --git a/chem/module_mosaic_therm.F b/chem/module_mosaic_therm.F index 1f6debd153..743a62afd3 100644 --- a/chem/module_mosaic_therm.F +++ b/chem/module_mosaic_therm.F @@ -87,7 +87,7 @@ module module_mosaic_therm ! update: jan 2005 !----------------------------------------------------------------------- subroutine aerchemistry( iclm, jclm, kclm_calcbgn, kclm_calcend, & - dtchem_sngl, idiagaa ) + dtchem_sngl, idiagaa,vbs_nbin ) use module_data_mosaic_asect use module_data_mosaic_other @@ -99,7 +99,7 @@ subroutine aerchemistry( iclm, jclm, kclm_calcbgn, kclm_calcend, & ! include 'v33com3' ! include 'mosaic.h' ! subr arguments - integer iclm, jclm, kclm_calcbgn, kclm_calcend, idiagaa + integer iclm, jclm, kclm_calcbgn, kclm_calcend, idiagaa,vbs_nbin real dtchem_sngl ! local variables real(kind=8) :: dtchem @@ -130,7 +130,7 @@ subroutine aerchemistry( iclm, jclm, kclm_calcbgn, kclm_calcend, & istat_mosaic_fe1 = 1 - call mosaic( k, m, dtchem ) + call mosaic( k, m, dtchem,vbs_nbin ) if (istat_mosaic_fe1 .lt. 0) then nfe1_mosaic_cur = nfe1_mosaic_cur + 1 @@ -176,7 +176,7 @@ end subroutine aerchemistry ! author: rahul a. zaveri ! update: dec 2004 !----------------------------------------------------------------------- - subroutine mosaic(k, m, dtchem) + subroutine mosaic(k, m, dtchem,vbs_nbin) use module_data_mosaic_asect use module_data_mosaic_other @@ -186,7 +186,7 @@ subroutine mosaic(k, m, dtchem) ! include 'v33com3' ! include 'mosaic.h' ! subr arguments - integer k, m + integer k, m,vbs_nbin real(kind=8) dtchem ! local variables real(kind=8) yh2o, dumdum @@ -224,7 +224,7 @@ subroutine mosaic(k, m, dtchem) call initialize_mosaic_variables - call update_thermodynamic_constants ! update t and rh dependent constants + call update_thermodynamic_constants(vbs_nbin) ! update t and rh dependent constants call map_mosaic_species(k, m, 0) @@ -505,6 +505,7 @@ subroutine initialize_mosaic_variables flux_s(iv,ibin) = 0.0 flux_l(iv,ibin) = 0.0 kg(iv,ibin) = 0.0 +! fraceq(iv,ibin) =0.0 phi_volatile_s(iv,ibin) = 0.0 phi_volatile_l(iv,ibin) = 0.0 df_gas_s(iv,ibin) = 0.0 @@ -606,46 +607,435 @@ subroutine map_mosaic_species(k, m, imap) end if ! soa gas-phase species -- currently deactivated -! if (karo1 .ge. p1st) then -! gas(iaro1_g) = rsub(karo1,k,m)*conv1a -! else - gas(iaro1_g) = 0.0 -! end if -! if (karo2 .ge. p1st) then -! gas(iaro2_g) = rsub(karo2,k,m)*conv1a -! else - gas(iaro2_g) = 0.0 -! end if -! if (kalk1 .ge. p1st) then -! gas(ialk1_g) = rsub(kalk1,k,m)*conv1a -! else - gas(ialk1_g) = 0.0 -! end if -! if (kole1 .ge. p1st) then -! gas(iole1_g) = rsub(kole1,k,m)*conv1a -! else - gas(iole1_g) = 0.0 -! end if -! if (kapi1 .ge. p1st) then -! gas(iapi1_g) = rsub(kapi1,k,m)*conv1a -! else - gas(iapi1_g) = 0.0 -! end if -! if (kapi2 .ge. p1st) then -! gas(iapi2_g) = rsub(kapi2,k,m)*conv1a -! else - gas(iapi2_g) = 0.0 -! end if -! if (klim1 .ge. p1st) then -! gas(ilim1_g) = rsub(klim1,k,m)*conv1a -! else - gas(ilim1_g) = 0.0 -! end if -! if (klim2 .ge. p1st) then -! gas(ilim2_g) = rsub(klim2,k,m)*conv1a -! else - gas(ilim2_g) = 0.0 -! end if + if (kpcg1_b_c .ge. p1st) then + gas(ipcg1_b_c_g) = rsub(kpcg1_b_c,k,m)*conv1a + else + gas(ipcg1_b_c_g) = 0.0 + end if + if (kpcg2_b_c .ge. p1st) then + gas(ipcg2_b_c_g) = rsub(kpcg2_b_c,k,m)*conv1a + else + gas(ipcg2_b_c_g) = 0.0 + end if + if (kpcg3_b_c .ge. p1st) then + gas(ipcg3_b_c_g) = rsub(kpcg3_b_c,k,m)*conv1a + else + gas(ipcg3_b_c_g) = 0.0 + end if + if (kpcg4_b_c .ge. p1st) then + gas(ipcg4_b_c_g) = rsub(kpcg4_b_c,k,m)*conv1a + else + gas(ipcg4_b_c_g) = 0.0 + end if + if (kpcg5_b_c .ge. p1st) then + gas(ipcg5_b_c_g) = rsub(kpcg5_b_c,k,m)*conv1a + else + gas(ipcg5_b_c_g) = 0.0 + end if + if (kpcg6_b_c .ge. p1st) then + gas(ipcg6_b_c_g) = rsub(kpcg6_b_c,k,m)*conv1a + else + gas(ipcg6_b_c_g) = 0.0 + end if + if (kpcg7_b_c .ge. p1st) then + gas(ipcg7_b_c_g) = rsub(kpcg7_b_c,k,m)*conv1a + else + gas(ipcg7_b_c_g) = 0.0 + end if + if (kpcg8_b_c .ge. p1st) then + gas(ipcg8_b_c_g) = rsub(kpcg8_b_c,k,m)*conv1a + else + gas(ipcg8_b_c_g) = 0.0 + end if + if (kpcg9_b_c .ge. p1st) then + gas(ipcg9_b_c_g) = rsub(kpcg9_b_c,k,m)*conv1a + else + gas(ipcg9_b_c_g) = 0.0 + end if + if (kpcg1_b_o .ge. p1st) then + gas(ipcg1_b_o_g) = rsub(kpcg1_b_o,k,m)*conv1a + else + gas(ipcg1_b_o_g) = 0.0 + end if + if (kpcg2_b_o .ge. p1st) then + gas(ipcg2_b_o_g) = rsub(kpcg2_b_o,k,m)*conv1a + else + gas(ipcg2_b_o_g) = 0.0 + end if + if (kpcg3_b_o .ge. p1st) then + gas(ipcg3_b_o_g) = rsub(kpcg3_b_o,k,m)*conv1a + else + gas(ipcg3_b_o_g) = 0.0 + end if + if (kpcg4_b_o .ge. p1st) then + gas(ipcg4_b_o_g) = rsub(kpcg4_b_o,k,m)*conv1a + else + gas(ipcg4_b_o_g) = 0.0 + end if + if (kpcg5_b_o .ge. p1st) then + gas(ipcg5_b_o_g) = rsub(kpcg5_b_o,k,m)*conv1a + else + gas(ipcg5_b_o_g) = 0.0 + end if + if (kpcg6_b_o .ge. p1st) then + gas(ipcg6_b_o_g) = rsub(kpcg6_b_o,k,m)*conv1a + else + gas(ipcg6_b_o_g) = 0.0 + end if + if (kpcg7_b_o .ge. p1st) then + gas(ipcg7_b_o_g) = rsub(kpcg7_b_o,k,m)*conv1a + else + gas(ipcg7_b_o_g) = 0.0 + end if + if (kpcg8_b_o .ge. p1st) then + gas(ipcg8_b_o_g) = rsub(kpcg8_b_o,k,m)*conv1a + else + gas(ipcg8_b_o_g) = 0.0 + end if + if (kpcg9_b_o .ge. p1st) then + gas(ipcg9_b_o_g) = rsub(kpcg9_b_o,k,m)*conv1a + else + gas(ipcg9_b_o_g) = 0.0 + end if + if (kopcg1_b_c .ge. p1st) then + gas(iopcg1_b_c_g) = rsub(kopcg1_b_c,k,m)*conv1a + else + gas(iopcg1_b_c_g) = 0.0 + end if + if (kopcg2_b_c .ge. p1st) then + gas(iopcg2_b_c_g) = rsub(kopcg2_b_c,k,m)*conv1a + else + gas(iopcg2_b_c_g) = 0.0 + end if + if (kopcg3_b_c .ge. p1st) then + gas(iopcg3_b_c_g) = rsub(kopcg3_b_c,k,m)*conv1a + else + gas(iopcg3_b_c_g) = 0.0 + end if + if (kopcg4_b_c .ge. p1st) then + gas(iopcg4_b_c_g) = rsub(kopcg4_b_c,k,m)*conv1a + else + gas(iopcg4_b_c_g) = 0.0 + end if + if (kopcg5_b_c .ge. p1st) then + gas(iopcg5_b_c_g) = rsub(kopcg5_b_c,k,m)*conv1a + else + gas(iopcg5_b_c_g) = 0.0 + end if + if (kopcg6_b_c .ge. p1st) then + gas(iopcg6_b_c_g) = rsub(kopcg6_b_c,k,m)*conv1a + else + gas(iopcg6_b_c_g) = 0.0 + end if + if (kopcg7_b_c .ge. p1st) then + gas(iopcg7_b_c_g) = rsub(kopcg7_b_c,k,m)*conv1a + else + gas(iopcg7_b_c_g) = 0.0 + end if + if (kopcg8_b_c .ge. p1st) then + gas(iopcg8_b_c_g) = rsub(kopcg8_b_c,k,m)*conv1a + else + gas(iopcg8_b_c_g) = 0.0 + end if + if (kopcg1_b_o .ge. p1st) then + gas(iopcg1_b_o_g) = rsub(kopcg1_b_o,k,m)*conv1a + else + gas(iopcg1_b_o_g) = 0.0 + end if + if (kopcg2_b_o .ge. p1st) then + gas(iopcg2_b_o_g) = rsub(kopcg2_b_o,k,m)*conv1a + else + gas(iopcg2_b_o_g) = 0.0 + end if + if (kopcg3_b_o .ge. p1st) then + gas(iopcg3_b_o_g) = rsub(kopcg3_b_o,k,m)*conv1a + else + gas(iopcg3_b_o_g) = 0.0 + end if + if (kopcg4_b_o .ge. p1st) then + gas(iopcg4_b_o_g) = rsub(kopcg4_b_o,k,m)*conv1a + else + gas(iopcg4_b_o_g) = 0.0 + end if + if (kopcg5_b_o .ge. p1st) then + gas(iopcg5_b_o_g) = rsub(kopcg5_b_o,k,m)*conv1a + else + gas(iopcg5_b_o_g) = 0.0 + end if + if (kopcg6_b_o .ge. p1st) then + gas(iopcg6_b_o_g) = rsub(kopcg6_b_o,k,m)*conv1a + else + gas(iopcg6_b_o_g) = 0.0 + end if + if (kopcg7_b_o .ge. p1st) then + gas(iopcg7_b_o_g) = rsub(kopcg7_b_o,k,m)*conv1a + else + gas(iopcg7_b_o_g) = 0.0 + end if + if (kopcg8_b_o .ge. p1st) then + gas(iopcg8_b_o_g) = rsub(kopcg8_b_o,k,m)*conv1a + else + gas(iopcg8_b_o_g) = 0.0 + end if + if (kpcg1_f_c .ge. p1st) then + gas(ipcg1_f_c_g) = rsub(kpcg1_f_c,k,m)*conv1a + else + gas(ipcg1_f_c_g) = 0.0 + end if + if (kpcg2_f_c .ge. p1st) then + gas(ipcg2_f_c_g) = rsub(kpcg2_f_c,k,m)*conv1a + else + gas(ipcg2_f_c_g) = 0.0 + end if + if (kpcg3_f_c .ge. p1st) then + gas(ipcg3_f_c_g) = rsub(kpcg3_f_c,k,m)*conv1a + else + gas(ipcg3_f_c_g) = 0.0 + end if + if (kpcg4_f_c .ge. p1st) then + gas(ipcg4_f_c_g) = rsub(kpcg4_f_c,k,m)*conv1a + else + gas(ipcg4_f_c_g) = 0.0 + end if + if (kpcg5_f_c .ge. p1st) then + gas(ipcg5_f_c_g) = rsub(kpcg5_f_c,k,m)*conv1a + else + gas(ipcg5_f_c_g) = 0.0 + end if + if (kpcg6_f_c .ge. p1st) then + gas(ipcg6_f_c_g) = rsub(kpcg6_f_c,k,m)*conv1a + else + gas(ipcg6_f_c_g) = 0.0 + end if + if (kpcg7_f_c .ge. p1st) then + gas(ipcg7_f_c_g) = rsub(kpcg7_f_c,k,m)*conv1a + else + gas(ipcg7_f_c_g) = 0.0 + end if + if (kpcg8_f_c .ge. p1st) then + gas(ipcg8_f_c_g) = rsub(kpcg8_f_c,k,m)*conv1a + else + gas(ipcg8_f_c_g) = 0.0 + end if + if (kpcg9_f_c .ge. p1st) then + gas(ipcg9_f_c_g) = rsub(kpcg9_f_c,k,m)*conv1a + else + gas(ipcg9_f_c_g) = 0.0 + end if + if (kpcg1_f_o .ge. p1st) then + gas(ipcg1_f_o_g) = rsub(kpcg1_f_o,k,m)*conv1a + else + gas(ipcg1_f_o_g) = 0.0 + end if + if (kpcg2_f_o .ge. p1st) then + gas(ipcg2_f_o_g) = rsub(kpcg2_f_o,k,m)*conv1a + else + gas(ipcg2_f_o_g) = 0.0 + end if + if (kpcg3_f_o .ge. p1st) then + gas(ipcg3_f_o_g) = rsub(kpcg3_f_o,k,m)*conv1a + else + gas(ipcg3_f_o_g) = 0.0 + end if + if (kpcg4_f_o .ge. p1st) then + gas(ipcg4_f_o_g) = rsub(kpcg4_f_o,k,m)*conv1a + else + gas(ipcg4_f_o_g) = 0.0 + end if + if (kpcg5_f_o .ge. p1st) then + gas(ipcg5_f_o_g) = rsub(kpcg5_f_o,k,m)*conv1a + else + gas(ipcg5_f_o_g) = 0.0 + end if + if (kpcg6_f_o .ge. p1st) then + gas(ipcg6_f_o_g) = rsub(kpcg6_f_o,k,m)*conv1a + else + gas(ipcg6_f_o_g) = 0.0 + end if + if (kpcg7_f_o .ge. p1st) then + gas(ipcg7_f_o_g) = rsub(kpcg7_f_o,k,m)*conv1a + else + gas(ipcg7_f_o_g) = 0.0 + end if + if (kpcg8_f_o .ge. p1st) then + gas(ipcg8_f_o_g) = rsub(kpcg8_f_o,k,m)*conv1a + else + gas(ipcg8_f_o_g) = 0.0 + end if + if (kpcg9_f_o .ge. p1st) then + gas(ipcg9_f_o_g) = rsub(kpcg9_f_o,k,m)*conv1a + else + gas(ipcg9_f_o_g) = 0.0 + end if + if (kopcg1_f_c .ge. p1st) then + gas(iopcg1_f_c_g) = rsub(kopcg1_f_c,k,m)*conv1a + else + gas(iopcg1_f_c_g) = 0.0 + end if + if (kopcg2_f_c .ge. p1st) then + gas(iopcg2_f_c_g) = rsub(kopcg2_f_c,k,m)*conv1a + else + gas(iopcg2_f_c_g) = 0.0 + end if + if (kopcg3_f_c .ge. p1st) then + gas(iopcg3_f_c_g) = rsub(kopcg3_f_c,k,m)*conv1a + else + gas(iopcg3_f_c_g) = 0.0 + end if + if (kopcg4_f_c .ge. p1st) then + gas(iopcg4_f_c_g) = rsub(kopcg4_f_c,k,m)*conv1a + else + gas(iopcg4_f_c_g) = 0.0 + end if + if (kopcg5_f_c .ge. p1st) then + gas(iopcg5_f_c_g) = rsub(kopcg5_f_c,k,m)*conv1a + else + gas(iopcg5_f_c_g) = 0.0 + end if + if (kopcg6_f_c .ge. p1st) then + gas(iopcg6_f_c_g) = rsub(kopcg6_f_c,k,m)*conv1a + else + gas(iopcg6_f_c_g) = 0.0 + end if + if (kopcg7_f_c .ge. p1st) then + gas(iopcg7_f_c_g) = rsub(kopcg7_f_c,k,m)*conv1a + else + gas(iopcg7_f_c_g) = 0.0 + end if + if (kopcg8_f_c .ge. p1st) then + gas(iopcg8_f_c_g) = rsub(kopcg8_f_c,k,m)*conv1a + else + gas(iopcg8_f_c_g) = 0.0 + end if + if (kopcg1_f_o .ge. p1st) then + gas(iopcg1_f_o_g) = rsub(kopcg1_f_o,k,m)*conv1a + else + gas(iopcg1_f_o_g) = 0.0 + end if + if (kopcg2_f_o .ge. p1st) then + gas(iopcg2_f_o_g) = rsub(kopcg2_f_o,k,m)*conv1a + else + gas(iopcg2_f_o_g) = 0.0 + end if + if (kopcg3_f_o .ge. p1st) then + gas(iopcg3_f_o_g) = rsub(kopcg3_f_o,k,m)*conv1a + else + gas(iopcg3_f_o_g) = 0.0 + end if + if (kopcg4_f_o .ge. p1st) then + gas(iopcg4_f_o_g) = rsub(kopcg4_f_o,k,m)*conv1a + else + gas(iopcg4_f_o_g) = 0.0 + end if + if (kopcg5_f_o .ge. p1st) then + gas(iopcg5_f_o_g) = rsub(kopcg5_f_o,k,m)*conv1a + else + gas(iopcg5_f_o_g) = 0.0 + end if + if (kopcg6_f_o .ge. p1st) then + gas(iopcg6_f_o_g) = rsub(kopcg6_f_o,k,m)*conv1a + else + gas(iopcg6_f_o_g) = 0.0 + end if + if (kopcg7_f_o .ge. p1st) then + gas(iopcg7_f_o_g) = rsub(kopcg7_f_o,k,m)*conv1a + else + gas(iopcg7_f_o_g) = 0.0 + end if + if (kopcg8_f_o .ge. p1st) then + gas(iopcg8_f_o_g) = rsub(kopcg8_f_o,k,m)*conv1a + else + gas(iopcg8_f_o_g) = 0.0 + end if + + if (kant1_c .ge. p1st) then + gas(iant1_c_g) = rsub(kant1_c,k,m)*conv1a + else + gas(iant1_c_g) = 0.0 + end if + if (kant2_c .ge. p1st) then + gas(iant2_c_g) = rsub(kant2_c,k,m)*conv1a + else + gas(iant2_c_g) = 0.0 + end if + if (kant3_c .ge. p1st) then + gas(iant3_c_g) = rsub(kant3_c,k,m)*conv1a + else + gas(iant3_c_g) = 0.0 + end if + if (kant4_c .ge. p1st) then + gas(iant4_c_g) = rsub(kant4_c,k,m)*conv1a + else + gas(iant4_c_g) = 0.0 + end if + + if (kant1_o .ge. p1st) then + gas(iant1_o_g) = rsub(kant1_o,k,m)*conv1a + else + gas(iant1_o_g) = 0.0 + end if + if (kant2_o .ge. p1st) then + gas(iant2_o_g) = rsub(kant2_o,k,m)*conv1a + else + gas(iant2_o_g) = 0.0 + end if + if (kant3_o .ge. p1st) then + gas(iant3_o_g) = rsub(kant3_o,k,m)*conv1a + else + gas(iant3_o_g) = 0.0 + end if + if (kant4_o .ge. p1st) then + gas(iant4_o_g) = rsub(kant4_o,k,m)*conv1a + else + gas(iant4_o_g) = 0.0 + end if + + if (kbiog1_c .ge. p1st) then + gas(ibiog1_c_g) = rsub(kbiog1_c,k,m)*conv1a + else + gas(ibiog1_c_g) = 0.0 + end if + if (kbiog2_c .ge. p1st) then + gas(ibiog2_c_g) = rsub(kbiog2_c,k,m)*conv1a + else + gas(ibiog2_c_g) = 0.0 + end if + if (kbiog3_c .ge. p1st) then + gas(ibiog3_c_g) = rsub(kbiog3_c,k,m)*conv1a + else + gas(ibiog3_c_g) = 0.0 + end if + if (kbiog4_c .ge. p1st) then + gas(ibiog4_c_g) = rsub(kbiog4_c,k,m)*conv1a + else + gas(ibiog4_c_g) = 0.0 + end if + + if (kbiog1_o .ge. p1st) then + gas(ibiog1_o_g) = rsub(kbiog1_o,k,m)*conv1a + else + gas(ibiog1_o_g) = 0.0 + end if + if (kbiog2_o .ge. p1st) then + gas(ibiog2_o_g) = rsub(kbiog2_o,k,m)*conv1a + else + gas(ibiog2_o_g) = 0.0 + end if + if (kbiog3_o .ge. p1st) then + gas(ibiog3_o_g) = rsub(kbiog3_o,k,m)*conv1a + else + gas(ibiog3_o_g) = 0.0 + end if + if (kbiog4_o .ge. p1st) then + gas(ibiog4_o_g) = rsub(kbiog4_o,k,m)*conv1a + else + gas(ibiog4_o_g) = 0.0 + end if + + + + + ! aerosol @@ -738,61 +1128,528 @@ subroutine map_mosaic_species(k, m, imap) end if ! soa aerosol-phase species -- currently deactivated -! l = lptr_aro1_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(iaro1_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(iaro1_a,jtotal,ibin)=0.0 -! end if - -! l = lptr_aro2_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(iaro2_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(iaro2_a,jtotal,ibin)=0.0 -! end if - -! l = lptr_alk1_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(ialk1_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(ialk1_a,jtotal,ibin)=0.0 -! end if - -! l = lptr_ole1_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(iole1_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(iole1_a,jtotal,ibin)=0.0 -! end if -! l = lptr_api1_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(iapi1_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(iapi1_a,jtotal,ibin)=0.0 -! end if + l = lptr_pcg1_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg1_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg1_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg2_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg2_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg2_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg3_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg3_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg3_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg4_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg4_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg4_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg5_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg5_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg5_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg6_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg6_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg6_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg7_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg7_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg7_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg8_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg8_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg8_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg9_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg9_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg9_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg1_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg1_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg1_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg2_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg2_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg2_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg3_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg3_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg3_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg4_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg4_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg4_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg5_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg5_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg5_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg6_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg6_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg6_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg7_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg7_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg7_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg8_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg8_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg8_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg9_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg9_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg9_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg1_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg1_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg1_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg2_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg2_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg2_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg3_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg3_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg3_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg4_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg4_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg4_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg5_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg5_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg5_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg6_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg6_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg6_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg7_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg7_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg7_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg8_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg8_b_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg8_b_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg1_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg1_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg1_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg2_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg2_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg2_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg3_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg3_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg3_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg4_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg4_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg4_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg5_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg5_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg5_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg6_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg6_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg6_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg7_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg7_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg7_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg8_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg8_b_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg8_b_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg1_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg1_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg1_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg2_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg2_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg2_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg3_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg3_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg3_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg4_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg4_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg4_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg5_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg5_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg5_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg6_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg6_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg6_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg7_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg7_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg7_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg8_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg8_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg8_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg9_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg9_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg9_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg1_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg1_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg1_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg2_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg2_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg2_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg3_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg3_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg3_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg4_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg4_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg4_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg5_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg5_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg5_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg6_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg6_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg6_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg7_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg7_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg7_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg8_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg8_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg8_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_pcg9_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ipcg9_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ipcg9_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg1_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg1_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg1_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg2_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg2_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg2_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg3_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg3_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg3_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg4_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg4_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg4_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg5_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg5_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg5_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg6_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg6_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg6_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg7_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg7_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg7_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg8_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg8_f_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg8_f_c_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg1_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg1_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg1_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg2_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg2_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg2_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg3_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg3_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg3_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg4_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg4_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg4_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg5_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg5_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg5_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg6_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg6_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg6_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg7_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg7_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg7_f_o_a,jtotal,ibin)=0.0 + end if + l = lptr_opcg8_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iopcg8_f_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iopcg8_f_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant1_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant1_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant1_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant2_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant2_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant2_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant3_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant3_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant3_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant4_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant4_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant4_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant1_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant1_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant1_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant2_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant2_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant2_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant3_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant3_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant3_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_ant4_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(iant4_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(iant4_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog1_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog1_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog1_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog2_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog2_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog2_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog3_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog3_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog3_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog4_c_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog4_c_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog4_c_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog1_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog1_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog1_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog2_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog2_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog2_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog3_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog3_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog3_o_a,jtotal,ibin)=0.0 + end if + + l = lptr_biog4_o_aer(isize,itype,iphase) + if (l .ge. p1st) then + aer(ibiog4_o_a,jtotal,ibin)=rsub(l,k,m)*conv1a + else + aer(ibiog4_o_a,jtotal,ibin)=0.0 + end if -! l = lptr_api2_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(iapi2_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(iapi2_a,jtotal,ibin)=0.0 -! end if - -! l = lptr_lim1_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(ilim1_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(ilim1_a,jtotal,ibin)=0.0 -! end if - -! l = lptr_lim2_aer(isize,itype,iphase) -! if (l .ge. p1st) then -! aer(ilim2_a,jtotal,ibin)=rsub(l,k,m)*conv1a -! else - aer(ilim2_a,jtotal,ibin)=0.0 -! end if ! water_a and water_a_hyst units are kg/(m^3 air) l = hyswptr_aer(isize,itype) @@ -840,23 +1697,174 @@ subroutine map_mosaic_species(k, m, imap) rsub(knh3,k,m) = gas(inh3_g)*conv1b ! soa gas-phase species -- currently deactivated -! if (karo1 .ge. p1st) & -! rsub(karo1,k,m) = gas(iaro1_g)*conv1b -! if (karo2 .ge. p1st) & -! rsub(karo2,k,m) = gas(iaro2_g)*conv1b -! if (kalk1 .ge. p1st) & -! rsub(kalk1,k,m) = gas(ialk1_g)*conv1b -! if (kole1 .ge. p1st) & -! rsub(kole1,k,m) = gas(iole1_g)*conv1b -! if (kapi1 .ge. p1st) & -! rsub(kapi1,k,m) = gas(iapi1_g)*conv1b -! if (kapi2 .ge. p1st) & -! rsub(kapi2,k,m) = gas(iapi2_g)*conv1b -! if (klim1 .ge. p1st) & -! rsub(klim1,k,m) = gas(ilim1_g)*conv1b -! if (klim2 .ge. p1st) & -! rsub(klim2,k,m) = gas(ilim2_g)*conv1b - + if (kpcg1_b_c .ge. p1st) & + rsub(kpcg1_b_c,k,m) = gas(ipcg1_b_c_g)*conv1b + if (kpcg2_b_c .ge. p1st) & + rsub(kpcg2_b_c,k,m) = gas(ipcg2_b_c_g)*conv1b + if (kpcg3_b_c .ge. p1st) & + rsub(kpcg3_b_c,k,m) = gas(ipcg3_b_c_g)*conv1b + if (kpcg4_b_c .ge. p1st) & + rsub(kpcg4_b_c,k,m) = gas(ipcg4_b_c_g)*conv1b + if (kpcg5_b_c .ge. p1st) & + rsub(kpcg5_b_c,k,m) = gas(ipcg5_b_c_g)*conv1b + if (kpcg6_b_c .ge. p1st) & + rsub(kpcg6_b_c,k,m) = gas(ipcg6_b_c_g)*conv1b + if (kpcg7_b_c .ge. p1st) & + rsub(kpcg7_b_c,k,m) = gas(ipcg7_b_c_g)*conv1b + if (kpcg8_b_c .ge. p1st) & + rsub(kpcg8_b_c,k,m) = gas(ipcg8_b_c_g)*conv1b + if (kpcg9_b_c .ge. p1st) & + rsub(kpcg9_b_c,k,m) = gas(ipcg9_b_c_g)*conv1b + if (kpcg1_b_o .ge. p1st) & + rsub(kpcg1_b_o,k,m) = gas(ipcg1_b_o_g)*conv1b + if (kpcg2_b_o .ge. p1st) & + rsub(kpcg2_b_o,k,m) = gas(ipcg2_b_o_g)*conv1b + if (kpcg3_b_o .ge. p1st) & + rsub(kpcg3_b_o,k,m) = gas(ipcg3_b_o_g)*conv1b + if (kpcg4_b_o .ge. p1st) & + rsub(kpcg4_b_o,k,m) = gas(ipcg4_b_o_g)*conv1b + if (kpcg5_b_o .ge. p1st) & + rsub(kpcg5_b_o,k,m) = gas(ipcg5_b_o_g)*conv1b + if (kpcg6_b_o .ge. p1st) & + rsub(kpcg6_b_o,k,m) = gas(ipcg6_b_o_g)*conv1b + if (kpcg7_b_o .ge. p1st) & + rsub(kpcg7_b_o,k,m) = gas(ipcg7_b_o_g)*conv1b + if (kpcg8_b_o .ge. p1st) & + rsub(kpcg8_b_o,k,m) = gas(ipcg8_b_o_g)*conv1b + if (kpcg9_b_o .ge. p1st) & + rsub(kpcg9_b_o,k,m) = gas(ipcg9_b_o_g)*conv1b + if (kopcg1_b_c .ge. p1st) & + rsub(kopcg1_b_c,k,m) = gas(iopcg1_b_c_g)*conv1b + if (kopcg2_b_c .ge. p1st) & + rsub(kopcg2_b_c,k,m) = gas(iopcg2_b_c_g)*conv1b + if (kopcg3_b_c .ge. p1st) & + rsub(kopcg3_b_c,k,m) = gas(iopcg3_b_c_g)*conv1b + if (kopcg4_b_c .ge. p1st) & + rsub(kopcg4_b_c,k,m) = gas(iopcg4_b_c_g)*conv1b + if (kopcg5_b_c .ge. p1st) & + rsub(kopcg5_b_c,k,m) = gas(iopcg5_b_c_g)*conv1b + if (kopcg6_b_c .ge. p1st) & + rsub(kopcg6_b_c,k,m) = gas(iopcg6_b_c_g)*conv1b + if (kopcg7_b_c .ge. p1st) & + rsub(kopcg7_b_c,k,m) = gas(iopcg7_b_c_g)*conv1b + if (kopcg8_b_c .ge. p1st) & + rsub(kopcg8_b_c,k,m) = gas(iopcg8_b_c_g)*conv1b + if (kopcg1_b_o .ge. p1st) & + rsub(kopcg1_b_o,k,m) = gas(iopcg1_b_o_g)*conv1b + if (kopcg2_b_o .ge. p1st) & + rsub(kopcg2_b_o,k,m) = gas(iopcg2_b_o_g)*conv1b + if (kopcg3_b_o .ge. p1st) & + rsub(kopcg3_b_o,k,m) = gas(iopcg3_b_o_g)*conv1b + if (kopcg4_b_o .ge. p1st) & + rsub(kopcg4_b_o,k,m) = gas(iopcg4_b_o_g)*conv1b + if (kopcg5_b_o .ge. p1st) & + rsub(kopcg5_b_o,k,m) = gas(iopcg5_b_o_g)*conv1b + if (kopcg6_b_o .ge. p1st) & + rsub(kopcg6_b_o,k,m) = gas(iopcg6_b_o_g)*conv1b + if (kopcg7_b_o .ge. p1st) & + rsub(kopcg7_b_o,k,m) = gas(iopcg7_b_o_g)*conv1b + if (kopcg8_b_o .ge. p1st) & + rsub(kopcg8_b_o,k,m) = gas(iopcg8_b_o_g)*conv1b + if (kpcg1_f_c .ge. p1st) & + rsub(kpcg1_f_c,k,m) = gas(ipcg1_f_c_g)*conv1b + if (kpcg2_f_c .ge. p1st) & + rsub(kpcg2_f_c,k,m) = gas(ipcg2_f_c_g)*conv1b + if (kpcg3_f_c .ge. p1st) & + rsub(kpcg3_f_c,k,m) = gas(ipcg3_f_c_g)*conv1b + if (kpcg4_f_c .ge. p1st) & + rsub(kpcg4_f_c,k,m) = gas(ipcg4_f_c_g)*conv1b + if (kpcg5_f_c .ge. p1st) & + rsub(kpcg5_f_c,k,m) = gas(ipcg5_f_c_g)*conv1b + if (kpcg6_f_c .ge. p1st) & + rsub(kpcg6_f_c,k,m) = gas(ipcg6_f_c_g)*conv1b + if (kpcg7_f_c .ge. p1st) & + rsub(kpcg7_f_c,k,m) = gas(ipcg7_f_c_g)*conv1b + if (kpcg8_f_c .ge. p1st) & + rsub(kpcg8_f_c,k,m) = gas(ipcg8_f_c_g)*conv1b + if (kpcg9_f_c .ge. p1st) & + rsub(kpcg9_f_c,k,m) = gas(ipcg9_f_c_g)*conv1b + if (kpcg1_f_o .ge. p1st) & + rsub(kpcg1_f_o,k,m) = gas(ipcg1_f_o_g)*conv1b + if (kpcg2_f_o .ge. p1st) & + rsub(kpcg2_f_o,k,m) = gas(ipcg2_f_o_g)*conv1b + if (kpcg3_f_o .ge. p1st) & + rsub(kpcg3_f_o,k,m) = gas(ipcg3_f_o_g)*conv1b + if (kpcg4_f_o .ge. p1st) & + rsub(kpcg4_f_o,k,m) = gas(ipcg4_f_o_g)*conv1b + if (kpcg5_f_o .ge. p1st) & + rsub(kpcg5_f_o,k,m) = gas(ipcg5_f_o_g)*conv1b + if (kpcg6_f_o .ge. p1st) & + rsub(kpcg6_f_o,k,m) = gas(ipcg6_f_o_g)*conv1b + if (kpcg7_f_o .ge. p1st) & + rsub(kpcg7_f_o,k,m) = gas(ipcg7_f_o_g)*conv1b + if (kpcg8_f_o .ge. p1st) & + rsub(kpcg8_f_o,k,m) = gas(ipcg8_f_o_g)*conv1b + if (kpcg9_f_o .ge. p1st) & + rsub(kpcg9_f_o,k,m) = gas(ipcg9_f_o_g)*conv1b + if (kopcg1_f_c .ge. p1st) & + rsub(kopcg1_f_c,k,m) = gas(iopcg1_f_c_g)*conv1b + if (kopcg2_f_c .ge. p1st) & + rsub(kopcg2_f_c,k,m) = gas(iopcg2_f_c_g)*conv1b + if (kopcg3_f_c .ge. p1st) & + rsub(kopcg3_f_c,k,m) = gas(iopcg3_f_c_g)*conv1b + if (kopcg4_f_c .ge. p1st) & + rsub(kopcg4_f_c,k,m) = gas(iopcg4_f_c_g)*conv1b + if (kopcg5_f_c .ge. p1st) & + rsub(kopcg5_f_c,k,m) = gas(iopcg5_f_c_g)*conv1b + if (kopcg6_f_c .ge. p1st) & + rsub(kopcg6_f_c,k,m) = gas(iopcg6_f_c_g)*conv1b + if (kopcg7_f_c .ge. p1st) & + rsub(kopcg7_f_c,k,m) = gas(iopcg7_f_c_g)*conv1b + if (kopcg8_f_c .ge. p1st) & + rsub(kopcg8_f_c,k,m) = gas(iopcg8_f_c_g)*conv1b + if (kopcg1_f_o .ge. p1st) & + rsub(kopcg1_f_o,k,m) = gas(iopcg1_f_o_g)*conv1b + if (kopcg2_f_o .ge. p1st) & + rsub(kopcg2_f_o,k,m) = gas(iopcg2_f_o_g)*conv1b + if (kopcg3_f_o .ge. p1st) & + rsub(kopcg3_f_o,k,m) = gas(iopcg3_f_o_g)*conv1b + if (kopcg4_f_o .ge. p1st) & + rsub(kopcg4_f_o,k,m) = gas(iopcg4_f_o_g)*conv1b + if (kopcg5_f_o .ge. p1st) & + rsub(kopcg5_f_o,k,m) = gas(iopcg5_f_o_g)*conv1b + if (kopcg6_f_o .ge. p1st) & + rsub(kopcg6_f_o,k,m) = gas(iopcg6_f_o_g)*conv1b + if (kopcg7_f_o .ge. p1st) & + rsub(kopcg7_f_o,k,m) = gas(iopcg7_f_o_g)*conv1b + if (kopcg8_f_o .ge. p1st) & + rsub(kopcg8_f_o,k,m) = gas(iopcg8_f_o_g)*conv1b + if (kant1_c .ge. p1st) & + rsub(kant1_c,k,m) = gas(iant1_c_g)*conv1b + if (kant2_c .ge. p1st) & + rsub(kant2_c,k,m) = gas(iant2_c_g)*conv1b + if (kant3_c .ge. p1st) & + rsub(kant3_c,k,m) = gas(iant3_c_g)*conv1b + if (kant4_c .ge. p1st) & + rsub(kant4_c,k,m) = gas(iant4_c_g)*conv1b + if (kant1_o .ge. p1st) & + rsub(kant1_o,k,m) = gas(iant1_o_g)*conv1b + if (kant2_o .ge. p1st) & + rsub(kant2_o,k,m) = gas(iant2_o_g)*conv1b + if (kant3_o .ge. p1st) & + rsub(kant3_o,k,m) = gas(iant3_o_g)*conv1b + if (kant4_o .ge. p1st) & + rsub(kant4_o,k,m) = gas(iant4_o_g)*conv1b + if (kbiog1_c .ge. p1st) & + rsub(kbiog1_c,k,m) = gas(ibiog1_c_g)*conv1b + if (kbiog2_c .ge. p1st) & + rsub(kbiog2_c,k,m) = gas(ibiog2_c_g)*conv1b + if (kbiog3_c .ge. p1st) & + rsub(kbiog3_c,k,m) = gas(ibiog3_c_g)*conv1b + if (kbiog4_c .ge. p1st) & + rsub(kbiog4_c,k,m) = gas(ibiog4_c_g)*conv1b + if (kbiog1_o .ge. p1st) & + rsub(kbiog1_o,k,m) = gas(ibiog1_o_g)*conv1b + if (kbiog2_o .ge. p1st) & + rsub(kbiog2_o,k,m) = gas(ibiog2_o_g)*conv1b + if (kbiog3_o .ge. p1st) & + rsub(kbiog3_o,k,m) = gas(ibiog3_o_g)*conv1b + if (kbiog4_o .ge. p1st) & + rsub(kbiog4_o,k,m) = gas(ibiog4_o_g)*conv1b ! aerosol iphase = ai_phase ibin = 0 @@ -901,29 +1909,180 @@ subroutine map_mosaic_species(k, m, imap) if (l .ge. p1st) rsub(l,k,m) = aer(ica_a,jtotal,ibin)*conv1b ! soa aerosol-phase species -- currently deactivated -! l = lptr_aro1_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(iaro1_a,jtotal,ibin)*conv1b - -! l = lptr_aro2_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(iaro2_a,jtotal,ibin)*conv1b -! l = lptr_alk1_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(ialk1_a,jtotal,ibin)*conv1b + l = lptr_pcg1_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg1_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg2_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg2_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg3_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg3_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg4_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg4_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg5_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg5_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg6_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg6_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg7_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg7_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg8_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg8_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg9_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg9_b_c_a,jtotal,ibin)*conv1b + l = lptr_pcg1_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg1_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg2_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg2_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg3_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg3_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg4_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg4_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg5_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg5_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg6_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg6_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg7_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg7_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg8_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg8_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg9_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg9_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg1_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg1_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg2_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg2_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg3_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg3_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg4_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg4_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg5_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg5_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg6_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg6_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg7_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg7_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg8_b_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg8_b_c_a,jtotal,ibin)*conv1b + l = lptr_opcg1_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg1_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg2_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg2_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg3_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg3_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg4_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg4_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg5_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg5_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg6_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg6_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg7_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg7_b_o_a,jtotal,ibin)*conv1b + l = lptr_opcg8_b_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg8_b_o_a,jtotal,ibin)*conv1b + l = lptr_pcg1_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg1_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg2_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg2_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg3_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg3_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg4_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg4_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg5_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg5_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg6_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg6_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg7_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg7_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg8_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg8_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg9_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg9_f_c_a,jtotal,ibin)*conv1b + l = lptr_pcg1_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg1_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg2_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg2_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg3_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg3_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg4_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg4_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg5_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg5_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg6_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg6_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg7_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg7_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg8_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg8_f_o_a,jtotal,ibin)*conv1b + l = lptr_pcg9_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ipcg9_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg1_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg1_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg2_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg2_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg3_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg3_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg4_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg4_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg5_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg5_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg6_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg6_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg7_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg7_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg8_f_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg8_f_c_a,jtotal,ibin)*conv1b + l = lptr_opcg1_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg1_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg2_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg2_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg3_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg3_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg4_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg4_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg5_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg5_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg6_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg6_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg7_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg7_f_o_a,jtotal,ibin)*conv1b + l = lptr_opcg8_f_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iopcg8_f_o_a,jtotal,ibin)*conv1b + + l = lptr_ant1_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant1_c_a,jtotal,ibin)*conv1b + l = lptr_ant2_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant2_c_a,jtotal,ibin)*conv1b + l = lptr_ant3_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant3_c_a,jtotal,ibin)*conv1b + l = lptr_ant4_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant4_c_a,jtotal,ibin)*conv1b + l = lptr_ant1_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant1_o_a,jtotal,ibin)*conv1b + l = lptr_ant2_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant2_o_a,jtotal,ibin)*conv1b + l = lptr_ant3_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant3_o_a,jtotal,ibin)*conv1b + l = lptr_ant4_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(iant4_o_a,jtotal,ibin)*conv1b + l = lptr_biog1_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog1_c_a,jtotal,ibin)*conv1b + l = lptr_biog2_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog2_c_a,jtotal,ibin)*conv1b + l = lptr_biog3_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog3_c_a,jtotal,ibin)*conv1b + l = lptr_biog4_c_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog4_c_a,jtotal,ibin)*conv1b + l = lptr_biog1_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog1_o_a,jtotal,ibin)*conv1b + l = lptr_biog2_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog2_o_a,jtotal,ibin)*conv1b + l = lptr_biog3_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog3_o_a,jtotal,ibin)*conv1b + l = lptr_biog4_o_aer(isize,itype,iphase) + if (l .ge. p1st) rsub(l,k,m) = aer(ibiog4_o_a,jtotal,ibin)*conv1b -! l = lptr_ole1_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(iole1_a,jtotal,ibin)*conv1b -! l = lptr_api1_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(iapi1_a,jtotal,ibin)*conv1b -! l = lptr_api2_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(iapi2_a,jtotal,ibin)*conv1b -! l = lptr_lim1_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(ilim1_a,jtotal,ibin)*conv1b - -! l = lptr_lim2_aer(isize,itype,iphase) -! if (l .ge. p1st) rsub(l,k,m) = aer(ilim2_a,jtotal,ibin)*conv1b l = hyswptr_aer(isize,itype) if (l .ge. p1st) rsub(l,k,m) = water_a_hyst(ibin)*conv2b @@ -1790,14 +2949,90 @@ subroutine do_full_deliquescence(ibin) ! touch electrolyte(jcaso4,jsolid,ibin) aer(ibc_a, jsolid,ibin) = aer(ibc_a,jtotal,ibin) aer(ioin_a,jsolid,ibin) = aer(ioin_a,jtotal,ibin) - aer(iaro1_a,jsolid,ibin)= aer(iaro1_a,jtotal,ibin) - aer(iaro2_a,jsolid,ibin)= aer(iaro2_a,jtotal,ibin) - aer(ialk1_a,jsolid,ibin)= aer(ialk1_a,jtotal,ibin) - aer(iole1_a,jsolid,ibin)= aer(iole1_a,jtotal,ibin) - aer(iapi1_a,jsolid,ibin)= aer(iapi1_a,jtotal,ibin) - aer(iapi2_a,jsolid,ibin)= aer(iapi2_a,jtotal,ibin) - aer(ilim1_a,jsolid,ibin)= aer(ilim1_a,jtotal,ibin) - aer(ilim2_a,jsolid,ibin)= aer(ilim2_a,jtotal,ibin) + aer(ipcg1_b_c_a,jsolid,ibin)= aer(ipcg1_b_c_a,jtotal,ibin) + aer(ipcg2_b_c_a,jsolid,ibin)= aer(ipcg2_b_c_a,jtotal,ibin) + aer(ipcg3_b_c_a,jsolid,ibin)= aer(ipcg3_b_c_a,jtotal,ibin) + aer(ipcg4_b_c_a,jsolid,ibin)= aer(ipcg4_b_c_a,jtotal,ibin) + aer(ipcg5_b_c_a,jsolid,ibin)= aer(ipcg5_b_c_a,jtotal,ibin) + aer(ipcg6_b_c_a,jsolid,ibin)= aer(ipcg6_b_c_a,jtotal,ibin) + aer(ipcg7_b_c_a,jsolid,ibin)= aer(ipcg7_b_c_a,jtotal,ibin) + aer(ipcg8_b_c_a,jsolid,ibin)= aer(ipcg8_b_c_a,jtotal,ibin) + aer(ipcg9_b_c_a,jsolid,ibin)= aer(ipcg9_b_c_a,jtotal,ibin) + aer(ipcg1_b_o_a,jsolid,ibin)= aer(ipcg1_b_o_a,jtotal,ibin) + aer(ipcg2_b_o_a,jsolid,ibin)= aer(ipcg2_b_o_a,jtotal,ibin) + aer(ipcg3_b_o_a,jsolid,ibin)= aer(ipcg3_b_o_a,jtotal,ibin) + aer(ipcg4_b_o_a,jsolid,ibin)= aer(ipcg4_b_o_a,jtotal,ibin) + aer(ipcg5_b_o_a,jsolid,ibin)= aer(ipcg5_b_o_a,jtotal,ibin) + aer(ipcg6_b_o_a,jsolid,ibin)= aer(ipcg6_b_o_a,jtotal,ibin) + aer(ipcg7_b_o_a,jsolid,ibin)= aer(ipcg7_b_o_a,jtotal,ibin) + aer(ipcg8_b_o_a,jsolid,ibin)= aer(ipcg8_b_o_a,jtotal,ibin) + aer(ipcg9_b_o_a,jsolid,ibin)= aer(ipcg9_b_o_a,jtotal,ibin) + aer(iopcg1_b_c_a,jsolid,ibin)= aer(iopcg1_b_c_a,jtotal,ibin) + aer(iopcg2_b_c_a,jsolid,ibin)= aer(iopcg2_b_c_a,jtotal,ibin) + aer(iopcg3_b_c_a,jsolid,ibin)= aer(iopcg3_b_c_a,jtotal,ibin) + aer(iopcg4_b_c_a,jsolid,ibin)= aer(iopcg4_b_c_a,jtotal,ibin) + aer(iopcg5_b_c_a,jsolid,ibin)= aer(iopcg5_b_c_a,jtotal,ibin) + aer(iopcg6_b_c_a,jsolid,ibin)= aer(iopcg6_b_c_a,jtotal,ibin) + aer(iopcg7_b_c_a,jsolid,ibin)= aer(iopcg7_b_c_a,jtotal,ibin) + aer(iopcg8_b_c_a,jsolid,ibin)= aer(iopcg8_b_c_a,jtotal,ibin) + aer(iopcg1_b_o_a,jsolid,ibin)= aer(iopcg1_b_o_a,jtotal,ibin) + aer(iopcg2_b_o_a,jsolid,ibin)= aer(iopcg2_b_o_a,jtotal,ibin) + aer(iopcg3_b_o_a,jsolid,ibin)= aer(iopcg3_b_o_a,jtotal,ibin) + aer(iopcg4_b_o_a,jsolid,ibin)= aer(iopcg4_b_o_a,jtotal,ibin) + aer(iopcg5_b_o_a,jsolid,ibin)= aer(iopcg5_b_o_a,jtotal,ibin) + aer(iopcg6_b_o_a,jsolid,ibin)= aer(iopcg6_b_o_a,jtotal,ibin) + aer(iopcg7_b_o_a,jsolid,ibin)= aer(iopcg7_b_o_a,jtotal,ibin) + aer(iopcg8_b_o_a,jsolid,ibin)= aer(iopcg8_b_o_a,jtotal,ibin) + aer(ipcg1_f_c_a,jsolid,ibin)= aer(ipcg1_f_c_a,jtotal,ibin) + aer(ipcg2_f_c_a,jsolid,ibin)= aer(ipcg2_f_c_a,jtotal,ibin) + aer(ipcg3_f_c_a,jsolid,ibin)= aer(ipcg3_f_c_a,jtotal,ibin) + aer(ipcg4_f_c_a,jsolid,ibin)= aer(ipcg4_f_c_a,jtotal,ibin) + aer(ipcg5_f_c_a,jsolid,ibin)= aer(ipcg5_f_c_a,jtotal,ibin) + aer(ipcg6_f_c_a,jsolid,ibin)= aer(ipcg6_f_c_a,jtotal,ibin) + aer(ipcg7_f_c_a,jsolid,ibin)= aer(ipcg7_f_c_a,jtotal,ibin) + aer(ipcg8_f_c_a,jsolid,ibin)= aer(ipcg8_f_c_a,jtotal,ibin) + aer(ipcg9_f_c_a,jsolid,ibin)= aer(ipcg9_f_c_a,jtotal,ibin) + aer(ipcg1_f_o_a,jsolid,ibin)= aer(ipcg1_f_o_a,jtotal,ibin) + aer(ipcg2_f_o_a,jsolid,ibin)= aer(ipcg2_f_o_a,jtotal,ibin) + aer(ipcg3_f_o_a,jsolid,ibin)= aer(ipcg3_f_o_a,jtotal,ibin) + aer(ipcg4_f_o_a,jsolid,ibin)= aer(ipcg4_f_o_a,jtotal,ibin) + aer(ipcg5_f_o_a,jsolid,ibin)= aer(ipcg5_f_o_a,jtotal,ibin) + aer(ipcg6_f_o_a,jsolid,ibin)= aer(ipcg6_f_o_a,jtotal,ibin) + aer(ipcg7_f_o_a,jsolid,ibin)= aer(ipcg7_f_o_a,jtotal,ibin) + aer(ipcg8_f_o_a,jsolid,ibin)= aer(ipcg8_f_o_a,jtotal,ibin) + aer(ipcg9_f_o_a,jsolid,ibin)= aer(ipcg9_f_o_a,jtotal,ibin) + aer(iopcg1_f_c_a,jsolid,ibin)= aer(iopcg1_f_c_a,jtotal,ibin) + aer(iopcg2_f_c_a,jsolid,ibin)= aer(iopcg2_f_c_a,jtotal,ibin) + aer(iopcg3_f_c_a,jsolid,ibin)= aer(iopcg3_f_c_a,jtotal,ibin) + aer(iopcg4_f_c_a,jsolid,ibin)= aer(iopcg4_f_c_a,jtotal,ibin) + aer(iopcg5_f_c_a,jsolid,ibin)= aer(iopcg5_f_c_a,jtotal,ibin) + aer(iopcg6_f_c_a,jsolid,ibin)= aer(iopcg6_f_c_a,jtotal,ibin) + aer(iopcg7_f_c_a,jsolid,ibin)= aer(iopcg7_f_c_a,jtotal,ibin) + aer(iopcg8_f_c_a,jsolid,ibin)= aer(iopcg8_f_c_a,jtotal,ibin) + aer(iopcg1_f_o_a,jsolid,ibin)= aer(iopcg1_f_o_a,jtotal,ibin) + aer(iopcg2_f_o_a,jsolid,ibin)= aer(iopcg2_f_o_a,jtotal,ibin) + aer(iopcg3_f_o_a,jsolid,ibin)= aer(iopcg3_f_o_a,jtotal,ibin) + aer(iopcg4_f_o_a,jsolid,ibin)= aer(iopcg4_f_o_a,jtotal,ibin) + aer(iopcg5_f_o_a,jsolid,ibin)= aer(iopcg5_f_o_a,jtotal,ibin) + aer(iopcg6_f_o_a,jsolid,ibin)= aer(iopcg6_f_o_a,jtotal,ibin) + aer(iopcg7_f_o_a,jsolid,ibin)= aer(iopcg7_f_o_a,jtotal,ibin) + aer(iopcg8_f_o_a,jsolid,ibin)= aer(iopcg8_f_o_a,jtotal,ibin) + aer(iant1_c_a,jsolid,ibin)= aer(iant1_c_a,jtotal,ibin) + aer(iant2_c_a,jsolid,ibin)= aer(iant2_c_a,jtotal,ibin) + aer(iant3_c_a,jsolid,ibin)= aer(iant3_c_a,jtotal,ibin) + aer(iant4_c_a,jsolid,ibin)= aer(iant4_c_a,jtotal,ibin) + aer(iant1_o_a,jsolid,ibin)= aer(iant1_o_a,jtotal,ibin) + aer(iant2_o_a,jsolid,ibin)= aer(iant2_o_a,jtotal,ibin) + aer(iant3_o_a,jsolid,ibin)= aer(iant3_o_a,jtotal,ibin) + aer(iant4_o_a,jsolid,ibin)= aer(iant4_o_a,jtotal,ibin) + aer(ibiog1_c_a,jsolid,ibin)= aer(ibiog1_c_a,jtotal,ibin) + aer(ibiog2_c_a,jsolid,ibin)= aer(ibiog2_c_a,jtotal,ibin) + aer(ibiog3_c_a,jsolid,ibin)= aer(ibiog3_c_a,jtotal,ibin) + aer(ibiog4_c_a,jsolid,ibin)= aer(ibiog4_c_a,jtotal,ibin) + aer(ibiog1_o_a,jsolid,ibin)= aer(ibiog1_o_a,jtotal,ibin) + aer(ibiog2_o_a,jsolid,ibin)= aer(ibiog2_o_a,jtotal,ibin) + aer(ibiog3_o_a,jsolid,ibin)= aer(ibiog3_o_a,jtotal,ibin) + aer(ibiog4_o_a,jsolid,ibin)= aer(ibiog4_o_a,jtotal,ibin) ! liquid-phase aer(iso4_a,jliquid,ibin) = aer(iso4_a,jtotal,ibin) - & @@ -1813,14 +3048,94 @@ subroutine do_full_deliquescence(ibin) ! touch electrolyte(jcacl2,jtotal,ibin) aer(ibc_a, jliquid,ibin) = 0.0 aer(ioin_a,jliquid,ibin) = 0.0 - aer(iaro1_a,jliquid,ibin)= 0.0 - aer(iaro2_a,jliquid,ibin)= 0.0 - aer(ialk1_a,jliquid,ibin)= 0.0 - aer(iole1_a,jliquid,ibin)= 0.0 - aer(iapi1_a,jliquid,ibin)= 0.0 - aer(iapi2_a,jliquid,ibin)= 0.0 - aer(ilim1_a,jliquid,ibin)= 0.0 - aer(ilim2_a,jliquid,ibin)= 0.0 + aer(ipcg1_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg2_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg3_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg4_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg5_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg6_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg7_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg8_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg9_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg1_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg2_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg3_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg4_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg5_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg6_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg7_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg8_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg9_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg1_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg2_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg3_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg4_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg5_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg6_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg7_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg8_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg1_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg2_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg3_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg4_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg5_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg6_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg7_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg8_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg1_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg2_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg3_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg4_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg5_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg6_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg7_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg8_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg9_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg1_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg2_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg3_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg4_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg5_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg6_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg7_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg8_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg9_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg1_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg2_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg3_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg4_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg5_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg6_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg7_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg8_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg1_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg2_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg3_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg4_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg5_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg6_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg7_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg8_f_o_a,jliquid,ibin)= 0.0 + aer(iant1_c_a,jliquid,ibin)= 0.0 + aer(iant2_c_a,jliquid,ibin)= 0.0 + aer(iant3_c_a,jliquid,ibin)= 0.0 + aer(iant4_c_a,jliquid,ibin)= 0.0 + aer(iant1_o_a,jliquid,ibin)= 0.0 + aer(iant2_o_a,jliquid,ibin)= 0.0 + aer(iant3_o_a,jliquid,ibin)= 0.0 + aer(iant4_o_a,jliquid,ibin)= 0.0 + aer(ibiog1_c_a,jliquid,ibin)= 0.0 + aer(ibiog2_c_a,jliquid,ibin)= 0.0 + aer(ibiog3_c_a,jliquid,ibin)= 0.0 + aer(ibiog4_c_a,jliquid,ibin)= 0.0 + aer(ibiog1_o_a,jliquid,ibin)= 0.0 + aer(ibiog2_o_a,jliquid,ibin)= 0.0 + aer(ibiog3_o_a,jliquid,ibin)= 0.0 + aer(ibiog4_o_a,jliquid,ibin)= 0.0 + + + + return end subroutine do_full_deliquescence @@ -3072,14 +4387,93 @@ subroutine adjust_liquid_aerosol(ibin) electrolyte(jcaso4,jsolid,ibin) aer(ibc_a,jsolid,ibin) = aer(ibc_a,jtotal,ibin) aer(ioin_a,jsolid,ibin) = aer(ioin_a,jtotal,ibin) - aer(iaro1_a,jsolid,ibin)= aer(iaro1_a,jtotal,ibin) - aer(iaro2_a,jsolid,ibin)= aer(iaro2_a,jtotal,ibin) - aer(ialk1_a,jsolid,ibin)= aer(ialk1_a,jtotal,ibin) - aer(iole1_a,jsolid,ibin)= aer(iole1_a,jtotal,ibin) - aer(iapi1_a,jsolid,ibin)= aer(iapi1_a,jtotal,ibin) - aer(iapi2_a,jsolid,ibin)= aer(iapi2_a,jtotal,ibin) - aer(ilim1_a,jsolid,ibin)= aer(ilim1_a,jtotal,ibin) - aer(ilim2_a,jsolid,ibin)= aer(ilim2_a,jtotal,ibin) + aer(ipcg1_b_c_a,jsolid,ibin)= aer(ipcg1_b_c_a,jtotal,ibin) + aer(ipcg2_b_c_a,jsolid,ibin)= aer(ipcg2_b_c_a,jtotal,ibin) + aer(ipcg3_b_c_a,jsolid,ibin)= aer(ipcg3_b_c_a,jtotal,ibin) + aer(ipcg4_b_c_a,jsolid,ibin)= aer(ipcg4_b_c_a,jtotal,ibin) + aer(ipcg5_b_c_a,jsolid,ibin)= aer(ipcg5_b_c_a,jtotal,ibin) + aer(ipcg6_b_c_a,jsolid,ibin)= aer(ipcg6_b_c_a,jtotal,ibin) + aer(ipcg7_b_c_a,jsolid,ibin)= aer(ipcg7_b_c_a,jtotal,ibin) + aer(ipcg8_b_c_a,jsolid,ibin)= aer(ipcg8_b_c_a,jtotal,ibin) + aer(ipcg9_b_c_a,jsolid,ibin)= aer(ipcg9_b_c_a,jtotal,ibin) + aer(ipcg1_b_o_a,jsolid,ibin)= aer(ipcg1_b_o_a,jtotal,ibin) + aer(ipcg2_b_o_a,jsolid,ibin)= aer(ipcg2_b_o_a,jtotal,ibin) + aer(ipcg3_b_o_a,jsolid,ibin)= aer(ipcg3_b_o_a,jtotal,ibin) + aer(ipcg4_b_o_a,jsolid,ibin)= aer(ipcg4_b_o_a,jtotal,ibin) + aer(ipcg5_b_o_a,jsolid,ibin)= aer(ipcg5_b_o_a,jtotal,ibin) + aer(ipcg6_b_o_a,jsolid,ibin)= aer(ipcg6_b_o_a,jtotal,ibin) + aer(ipcg7_b_o_a,jsolid,ibin)= aer(ipcg7_b_o_a,jtotal,ibin) + aer(ipcg8_b_o_a,jsolid,ibin)= aer(ipcg8_b_o_a,jtotal,ibin) + aer(ipcg9_b_o_a,jsolid,ibin)= aer(ipcg9_b_o_a,jtotal,ibin) + aer(iopcg1_b_c_a,jsolid,ibin)= aer(iopcg1_b_c_a,jtotal,ibin) + aer(iopcg2_b_c_a,jsolid,ibin)= aer(iopcg2_b_c_a,jtotal,ibin) + aer(iopcg3_b_c_a,jsolid,ibin)= aer(iopcg3_b_c_a,jtotal,ibin) + aer(iopcg4_b_c_a,jsolid,ibin)= aer(iopcg4_b_c_a,jtotal,ibin) + aer(iopcg5_b_c_a,jsolid,ibin)= aer(iopcg5_b_c_a,jtotal,ibin) + aer(iopcg6_b_c_a,jsolid,ibin)= aer(iopcg6_b_c_a,jtotal,ibin) + aer(iopcg7_b_c_a,jsolid,ibin)= aer(iopcg7_b_c_a,jtotal,ibin) + aer(iopcg8_b_c_a,jsolid,ibin)= aer(iopcg8_b_c_a,jtotal,ibin) + aer(iopcg1_b_o_a,jsolid,ibin)= aer(iopcg1_b_o_a,jtotal,ibin) + aer(iopcg2_b_o_a,jsolid,ibin)= aer(iopcg2_b_o_a,jtotal,ibin) + aer(iopcg3_b_o_a,jsolid,ibin)= aer(iopcg3_b_o_a,jtotal,ibin) + aer(iopcg4_b_o_a,jsolid,ibin)= aer(iopcg4_b_o_a,jtotal,ibin) + aer(iopcg5_b_o_a,jsolid,ibin)= aer(iopcg5_b_o_a,jtotal,ibin) + aer(iopcg6_b_o_a,jsolid,ibin)= aer(iopcg6_b_o_a,jtotal,ibin) + aer(iopcg7_b_o_a,jsolid,ibin)= aer(iopcg7_b_o_a,jtotal,ibin) + aer(iopcg8_b_o_a,jsolid,ibin)= aer(iopcg8_b_o_a,jtotal,ibin) + aer(ipcg1_f_c_a,jsolid,ibin)= aer(ipcg1_f_c_a,jtotal,ibin) + aer(ipcg2_f_c_a,jsolid,ibin)= aer(ipcg2_f_c_a,jtotal,ibin) + aer(ipcg3_f_c_a,jsolid,ibin)= aer(ipcg3_f_c_a,jtotal,ibin) + aer(ipcg4_f_c_a,jsolid,ibin)= aer(ipcg4_f_c_a,jtotal,ibin) + aer(ipcg5_f_c_a,jsolid,ibin)= aer(ipcg5_f_c_a,jtotal,ibin) + aer(ipcg6_f_c_a,jsolid,ibin)= aer(ipcg6_f_c_a,jtotal,ibin) + aer(ipcg7_f_c_a,jsolid,ibin)= aer(ipcg7_f_c_a,jtotal,ibin) + aer(ipcg8_f_c_a,jsolid,ibin)= aer(ipcg8_f_c_a,jtotal,ibin) + aer(ipcg9_f_c_a,jsolid,ibin)= aer(ipcg9_f_c_a,jtotal,ibin) + aer(ipcg1_f_o_a,jsolid,ibin)= aer(ipcg1_f_o_a,jtotal,ibin) + aer(ipcg2_f_o_a,jsolid,ibin)= aer(ipcg2_f_o_a,jtotal,ibin) + aer(ipcg3_f_o_a,jsolid,ibin)= aer(ipcg3_f_o_a,jtotal,ibin) + aer(ipcg4_f_o_a,jsolid,ibin)= aer(ipcg4_f_o_a,jtotal,ibin) + aer(ipcg5_f_o_a,jsolid,ibin)= aer(ipcg5_f_o_a,jtotal,ibin) + aer(ipcg6_f_o_a,jsolid,ibin)= aer(ipcg6_f_o_a,jtotal,ibin) + aer(ipcg7_f_o_a,jsolid,ibin)= aer(ipcg7_f_o_a,jtotal,ibin) + aer(ipcg8_f_o_a,jsolid,ibin)= aer(ipcg8_f_o_a,jtotal,ibin) + aer(ipcg9_f_o_a,jsolid,ibin)= aer(ipcg9_f_o_a,jtotal,ibin) + aer(iopcg1_f_c_a,jsolid,ibin)= aer(iopcg1_f_c_a,jtotal,ibin) + aer(iopcg2_f_c_a,jsolid,ibin)= aer(iopcg2_f_c_a,jtotal,ibin) + aer(iopcg3_f_c_a,jsolid,ibin)= aer(iopcg3_f_c_a,jtotal,ibin) + aer(iopcg4_f_c_a,jsolid,ibin)= aer(iopcg4_f_c_a,jtotal,ibin) + aer(iopcg5_f_c_a,jsolid,ibin)= aer(iopcg5_f_c_a,jtotal,ibin) + aer(iopcg6_f_c_a,jsolid,ibin)= aer(iopcg6_f_c_a,jtotal,ibin) + aer(iopcg7_f_c_a,jsolid,ibin)= aer(iopcg7_f_c_a,jtotal,ibin) + aer(iopcg8_f_c_a,jsolid,ibin)= aer(iopcg8_f_c_a,jtotal,ibin) + aer(iopcg1_f_o_a,jsolid,ibin)= aer(iopcg1_f_o_a,jtotal,ibin) + aer(iopcg2_f_o_a,jsolid,ibin)= aer(iopcg2_f_o_a,jtotal,ibin) + aer(iopcg3_f_o_a,jsolid,ibin)= aer(iopcg3_f_o_a,jtotal,ibin) + aer(iopcg4_f_o_a,jsolid,ibin)= aer(iopcg4_f_o_a,jtotal,ibin) + aer(iopcg5_f_o_a,jsolid,ibin)= aer(iopcg5_f_o_a,jtotal,ibin) + aer(iopcg6_f_o_a,jsolid,ibin)= aer(iopcg6_f_o_a,jtotal,ibin) + aer(iopcg7_f_o_a,jsolid,ibin)= aer(iopcg7_f_o_a,jtotal,ibin) + aer(iopcg8_f_o_a,jsolid,ibin)= aer(iopcg8_f_o_a,jtotal,ibin) + aer(iant1_c_a,jsolid,ibin)= aer(iant1_c_a,jtotal,ibin) + aer(iant2_c_a,jsolid,ibin)= aer(iant2_c_a,jtotal,ibin) + aer(iant3_c_a,jsolid,ibin)= aer(iant3_c_a,jtotal,ibin) + aer(iant4_c_a,jsolid,ibin)= aer(iant4_c_a,jtotal,ibin) + aer(iant1_o_a,jsolid,ibin)= aer(iant1_o_a,jtotal,ibin) + aer(iant2_o_a,jsolid,ibin)= aer(iant2_o_a,jtotal,ibin) + aer(iant3_o_a,jsolid,ibin)= aer(iant3_o_a,jtotal,ibin) + aer(iant4_o_a,jsolid,ibin)= aer(iant4_o_a,jtotal,ibin) + aer(ibiog1_c_a,jsolid,ibin)= aer(ibiog1_c_a,jtotal,ibin) + aer(ibiog2_c_a,jsolid,ibin)= aer(ibiog2_c_a,jtotal,ibin) + aer(ibiog3_c_a,jsolid,ibin)= aer(ibiog3_c_a,jtotal,ibin) + aer(ibiog4_c_a,jsolid,ibin)= aer(ibiog4_c_a,jtotal,ibin) + aer(ibiog1_o_a,jsolid,ibin)= aer(ibiog1_o_a,jtotal,ibin) + aer(ibiog2_o_a,jsolid,ibin)= aer(ibiog2_o_a,jtotal,ibin) + aer(ibiog3_o_a,jsolid,ibin)= aer(ibiog3_o_a,jtotal,ibin) + aer(ibiog4_o_a,jsolid,ibin)= aer(ibiog4_o_a,jtotal,ibin) + + + ! liquid-phase aer(iso4_a,jliquid,ibin) = aer(iso4_a,jtotal,ibin) - & @@ -3097,14 +4491,94 @@ subroutine adjust_liquid_aerosol(ibin) aer(ica_a,jliquid,ibin) = max(0.D0, aer(ica_a,jliquid,ibin)) aer(ibc_a,jliquid,ibin) = 0.0 aer(ioin_a,jliquid,ibin) = 0.0 - aer(iaro1_a,jliquid,ibin)= 0.0 - aer(iaro2_a,jliquid,ibin)= 0.0 - aer(ialk1_a,jliquid,ibin)= 0.0 - aer(iole1_a,jliquid,ibin)= 0.0 - aer(iapi1_a,jliquid,ibin)= 0.0 - aer(iapi2_a,jliquid,ibin)= 0.0 - aer(ilim1_a,jliquid,ibin)= 0.0 - aer(ilim2_a,jliquid,ibin)= 0.0 + aer(ipcg1_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg2_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg3_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg4_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg5_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg6_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg7_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg8_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg9_b_c_a,jliquid,ibin)= 0.0 + aer(ipcg1_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg2_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg3_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg4_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg5_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg6_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg7_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg8_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg9_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg1_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg2_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg3_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg4_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg5_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg6_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg7_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg8_b_c_a,jliquid,ibin)= 0.0 + aer(iopcg1_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg2_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg3_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg4_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg5_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg6_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg7_b_o_a,jliquid,ibin)= 0.0 + aer(iopcg8_b_o_a,jliquid,ibin)= 0.0 + aer(ipcg1_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg2_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg3_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg4_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg5_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg6_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg7_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg8_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg9_f_c_a,jliquid,ibin)= 0.0 + aer(ipcg1_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg2_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg3_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg4_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg5_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg6_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg7_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg8_f_o_a,jliquid,ibin)= 0.0 + aer(ipcg9_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg1_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg2_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg3_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg4_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg5_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg6_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg7_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg8_f_c_a,jliquid,ibin)= 0.0 + aer(iopcg1_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg2_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg3_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg4_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg5_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg6_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg7_f_o_a,jliquid,ibin)= 0.0 + aer(iopcg8_f_o_a,jliquid,ibin)= 0.0 + aer(iant1_c_a,jliquid,ibin)= 0.0 + aer(iant2_c_a,jliquid,ibin)= 0.0 + aer(iant3_c_a,jliquid,ibin)= 0.0 + aer(iant4_c_a,jliquid,ibin)= 0.0 + aer(iant1_o_a,jliquid,ibin)= 0.0 + aer(iant2_o_a,jliquid,ibin)= 0.0 + aer(iant3_o_a,jliquid,ibin)= 0.0 + aer(iant4_o_a,jliquid,ibin)= 0.0 + aer(ibiog1_c_a,jliquid,ibin)= 0.0 + aer(ibiog2_c_a,jliquid,ibin)= 0.0 + aer(ibiog3_c_a,jliquid,ibin)= 0.0 + aer(ibiog4_c_a,jliquid,ibin)= 0.0 + aer(ibiog1_o_a,jliquid,ibin)= 0.0 + aer(ibiog2_o_a,jliquid,ibin)= 0.0 + aer(ibiog3_o_a,jliquid,ibin)= 0.0 + aer(ibiog4_o_a,jliquid,ibin)= 0.0 + + + + return end subroutine adjust_liquid_aerosol @@ -3178,6 +4652,7 @@ subroutine ASTEM(dtchem) if (istat_mosaic_fe1 .lt. 0) return call calc_dry_n_wet_aerosol_props(ibin) endif +! endif ! added by Manish Shrivastav 12/7/09 enddo @@ -3200,22 +4675,19 @@ subroutine ASTEM(dtchem) if (istat_mosaic_fe1 .lt. 0) return ! condense secondary organic gases (8 sorgam species) -! call ASTEM_secondary_organics(dtchem) ! semi-implicit euler -! if (istat_mosaic_fe1 .lt. 0) return - + if (istat_mosaic_fe1 .lt. 0) return + call equilibrium ! template for error status checking ! if (iprint_mosaic_fe1 .gt. 0) then ! write(6,*)'error in computing dtmax for soa' ! write(6,*)'mosaic fatal error in astem_soa_dtmax' -! endif ! stop +! endif ! istat_mosaic_fe1 = -1800 ! return ! endif - - return end subroutine astem @@ -3309,14 +4781,456 @@ end subroutine print_mosaic_stats +! Calculates the equilibrium gas-particle partitioning for SOA species + subroutine equilibrium +! This routine was implemented by Manish Shrivastava on 12/24/2009 to do gas-particle partitioning of SOA assuming thermodynamic equilibrium. +! This would give MOSAIC cpabilities of running both dynamic and equilibrium gas-particle partitioning +! Calls the subroutine soap. Subroutine soap calls subroutine spfcn +! use module_data_mosaic_main +! use module_data_mosaic_aero + + implicit none + real(kind=8), parameter :: tinys=1.0d-15 + integer, parameter :: N=ngas_soa !Total number of soa species + integer, parameter :: itermax=2000 + integer idxfresh(N),idxaged(N) !counter for fresh and aged soa species + real(kind=8) :: dq,frqfresh(nbin_a),frqaged(nbin_a) + real(kind=8) :: frqtotfresh,frqtotaged,frt + real(kind=8) :: xsumfresh(nbin_a),xsumaged(nbin_a) + real(kind=8) :: mnkfresh,mxkfresh,mnkaged,mxkaged + real betak +! integer :: flagsoap(N) ! flagsoap determines if the species 'i' is fresh (flagsoap(i)=2) or aged(flagsoap(i)=1 + real(kind=8) :: Csatfresh(N), Ctotfresh(N) + real(kind=8) :: Cgasfresh(N),Caerfresh(N) ! Csat: Saturation conc., Ctot: Total organic mass +! in gas+aerosol phase, Cgas:gas phase, Caer: Particle + real(kind=8) :: Csataged(N), Ctotaged(N) + real(kind=8) :: Cgasaged(N),Caeraged(N) + integer nsolfresh,nsolaged,ntrack,icontfresh,icontaged ! counters corresponding to fresh and aged species for mapping + real(kind=8) :: cpxfresh,cpxaged !Moles of pre-existing fresh and aged particle phase organic mass + integer ibin,iter ! Bin nos. +! local variables + integer iv, jp + real(kind=8) :: dum, sum_dum, sum_soa, small_oc + +! real, parameter :: tolmin = 1.E-12^M +! real, parameter :: conmin = 1.E-20^M +! real totOA,minitw !total OA in particle phase^M + real(kind=8) :: cpx !pre-existing OA umol/m3^M + real(kind=8) :: Ctot(N),Caer(N),Cgas(N),Csat(N) + real(kind=8) :: Paer(ngas_volatile) + integer :: i +! LOGICAL check + jp=jtotal + iter=0 + cpxaged=0.0 + cpxfresh=0.0 ! Assume no pres-existing OA forms a solution + nsolfresh=0 + nsolaged=0 + icontfresh=0 + icontaged=0 + dq=0.0 +! Paer holds the organic aerosol values in each volatility bin (sum of all size bins) + do iv=1,ngas_volatile + Paer(iv)=0.0 + enddo +! Initialize flagsoap + do i=1,N + flagsoap(i)=1 + enddo +! Calculate Ctot and Paer + do iv = ipcg1_b_c_g, ngas_volatile + total_species(iv) = gas(iv) + do ibin = 1, nbin_a + total_species(iv) = total_species(iv) + aer(iv,jtotal,ibin) + Paer(iv)=Paer(iv)+aer(iv,jtotal,ibin) + enddo + enddo +! Calculate pre-existing moles of OA (cpx) as sum of all size bins + do ibin=1,nbin_a + cpxaged= cpxaged+aer(ioc_a,jp,ibin) + enddo +!remove ioc_a to check equlibrium calculations by Manish Shrivastava on 02/04/2010 +! Maps arrays starting from ipcg1_b_c_g on to corresponding arrays starting from 1 for just soa species + do i=1,N + Ctot(i)=total_species(ipcg1_b_c_g+i-1) + Caer(i)=Paer(ipcg1_b_c_g+i-1) + Csat(i)=sat_soa(ipcg1_b_c_g+i-1) + Cgas(i)=gas(ipcg1_b_c_g+i-1) + enddo + +! Initialize mapping array indices + do i=1,N + idxfresh(i)=0 + idxaged(i)=0 + enddo +! Seperate the fresh and aged species and treat them as 2 different solutions. Note this approach differes from PMCAMx +! In PMCAMx if flagsoap(i) was set to zero those species were not considered solution forming. + + do i=1,9 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=10,18 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=19,26 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=27,34 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=35,43 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=44,52 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=53,60 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=61,68 + flagsoap(i)=1 ! Biomass burning(carbon and oxygen species) +traditional soa species + enddo + do i=69,84 + flagsoap(i)=1 !Oxidized fossil oxygen + enddo + do i=1,N + if (flagsoap(i).eq.2) then ! fresh primary species forming 1 solution + icontfresh=icontfresh+1 ! count the number of fresh species + idxfresh(icontfresh) = i !Map the species + Csatfresh(icontfresh)=Csat(i) + Ctotfresh(icontfresh)=Ctot(i) + Caerfresh(icontfresh)=Caer(i) + Cgasfresh(icontfresh)=Cgas(i) + nsolfresh=nsolfresh+1 + elseif (flagsoap(i).eq.1) then ! Aged SOA species forming another solution + icontaged=icontaged+1 + idxaged(icontaged) = i + Csataged(icontaged)=Csat(i) + Ctotaged(icontaged)=Ctot(i) + Caeraged(icontaged)=Caer(i) + Cgasaged(icontaged)=Cgas(i) + nsolaged=nsolaged+1 + endif + enddo +! Caluclate the initial equilibrium partitioning by the bisection method (CMU PMCAMx approach) +! If all fresh abd aged species form a solution +! call soap(ngas_soa,Ctot,Csat,Caer,Cgas,cpx) + +! if fresh and aged species form seperate solutions + if (nsolfresh.gt.0) call soap(nsolfresh,Ctotfresh, & + Csatfresh,Caerfresh,Cgasfresh,cpxfresh) + if (nsolaged.gt.0) call soap(nsolaged,Ctotaged, & + Csataged,Caeraged,Cgasaged,cpxaged) + +! Map the fresh and aged species back into original arrays +! Now assign the equilibrium gas-particle partitioning arrays + ntrack=0 + do i=1,N ! Map the fresh and aged species back into array from 1 to N after calculating equilibrium + if (idxfresh(i).gt.0) then + Caer(idxfresh(i))= Caerfresh(i) + Cgas(idxfresh(i))= Cgasfresh(i) + Ctot(idxfresh(i))= Ctotfresh(i) + ntrack=ntrack+1 + endif + if (idxaged(i).gt.0) then + Caer(idxaged(i))= Caeraged(i) + Cgas(idxaged(i))= Cgasaged(i) + Ctot(idxaged(i))= Ctotaged(i) + ntrack=ntrack+1 + endif + enddo +! Check for total number of species + if (ntrack.ne.N) then + print *, 'Error in mapping fresh and primary species arrays' + stop + endif +! From here on distribute the organic aerosol in size bins following Koo et al. 2003 " Integrated approaches to modeling +! the organic and inorganic atmospheric aerosol components" +! The original code from PMCAMx was modified to include 2 solutions for fresh and primary species +! by Manish Shrivastava on 01/11/2010 +! Calculate total organic aerosol OA(in nmoles/m3) in each bin for either of fresh and aged aerosols + + do ibin=1,nbin_a + xsumfresh(ibin)=0.0 + xsumaged(ibin)=0.0 + xsumaged(ibin)= xsumaged(ibin)+aer(ioc_a,jp,ibin)!Caluclate pre-existing primary in each bin for aged aerosol + do iv = ipcg1_b_c_g, ngas_volatile + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then + xsumfresh(ibin)= xsumfresh(ibin)+aer(iv,jtotal,ibin) + elseif (flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + xsumaged(ibin)= xsumaged(ibin)+aer(iv,jtotal,ibin) + elseif (flagsoap(iv-ipcg1_b_c_g+1).eq.0) then + print *, 'Error in mapping flagsoap to ipcg1_b_c_g' + endif + enddo +! Give a small non-zero value to xsum if it is zero in the section + if (xsumfresh(ibin).eq.0.0) xsumfresh(ibin)=tinys + if (xsumaged(ibin).eq.0.0) xsumaged(ibin)=tinys + enddo +! Calculate dq as (gas concentration) G(t)-G(t+h): +! Caluclate driving force at previous time step (Cgas,i-XiCsati) for both fresh and aged solutions + do iv = ipcg1_b_c_g, ngas_volatile + if (Ctot(iv-ipcg1_b_c_g+1).lt.1d-10) goto 120 ! If a given species concentration is too low skip + dq=gas(iv)-Cgas(iv-ipcg1_b_c_g+1) !Since both fresh and aged species have been remapped to an array going from 1 to N + frqtotfresh=0.0d0 + frqtotaged=0.0d0 + mnkfresh=0.0d0 + mnkaged=0.0d0 + mxkfresh=0.0d0 + mxkaged=0.0d0 + do ibin=1,nbin_a +! fraceq(iv,ibin) is calculated as the rate of mass transfer +! The weighting fractions frqfresh(ibin) amd frqaged(ibin) are caluclated assuming mole fractions from previous time step +! This assumtion could be relaxed by iterativetely solving this equation + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then + frqfresh(ibin)= kg(iv,ibin)*(gas(iv) & ! replaced fraceq(iv,ibin) by kg(iv,ibin) on 01/19/10 + -(aer(iv,jtotal,ibin))/xsumfresh(ibin) & + *Csat(iv-ipcg1_b_c_g+1)) + endif + if (flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + frqaged(ibin)= kg(iv,ibin)*(gas(iv) & ! replaced fraceq(iv,ibin) by kg(iv,ibin) on 01/19/10 + -(aer(iv,jtotal,ibin))/xsumaged(ibin) & + *Csat(iv-ipcg1_b_c_g+1)) + endif + mnkfresh=min(mnkfresh,frqfresh(ibin)) + mnkaged=min(mnkaged,frqaged(ibin)) + + mxkfresh=max(mxkfresh,frqfresh(ibin)) + mxkaged=max(mxkaged,frqaged(ibin)) + enddo ! for ibin +! Repeat code from this point on for aged aerosol species + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then +! Condensation is favored in the next time step in this bin + if(dq.gt.0.and.mnkfresh.lt.0.and.mxkfresh.gt.0) then + do ibin=1,nbin_a + frqfresh(ibin)=max(frqfresh(ibin)-mnkfresh,0.0d0) + enddo +! evaporation is favored in the next time step in this bin + elseif(dq.lt.0.and.mxkfresh.gt.0.and.mnkfresh.lt.0) then + do ibin=1,nbin_a + frqfresh(ibin)=min(frqfresh(ibin)-mxkfresh,0.0d0) + enddo + endif + do ibin=1,nbin_a + frqtotfresh=frqtotfresh+frqfresh(ibin) + enddo +! Re-normalize frqfresh(ibin) +! Additional code to check for frqtotfresh and frqtotaged +! Added by Manish Shrivastava on 02/19/2010 + + do ibin=1,nbin_a + frqfresh(ibin)=frqfresh(ibin)/frqtotfresh + enddo + + elseif(flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + if(dq.gt.0.and.mnkaged.lt.0.and.mxkaged.gt.0) then + do ibin=1,nbin_a + frqaged(ibin)=max(frqaged(ibin)-mnkaged,0.0d0) + enddo + elseif(dq.lt.0.and.mxkaged.gt.0.and.mnkaged.lt.0) then + do ibin=1,nbin_a + frqaged(ibin)=min(frqaged(ibin)-mxkaged,0.0d0) + enddo + endif + + do ibin=1,nbin_a + frqtotaged=frqtotaged+frqaged(ibin) + enddo + + do ibin=1,nbin_a + frqaged(ibin)=frqaged(ibin)/frqtotaged + enddo + + endif ! for flagsoap +! Condense all condensing species + if(dq.gt.0.0d0) then + ! Map the species back into the original MOSAIC arrays + + do ibin=1,nbin_a + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then + aer(iv,jtotal,ibin)= aer(iv,jtotal,ibin)+dq*frqfresh(ibin) + endif + if (flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + aer(iv,jtotal,ibin)= aer(iv,jtotal,ibin)+dq*frqaged(ibin) + endif + enddo +! Set the gas phase species to equilibrium value + gas(iv)=Cgas(iv-ipcg1_b_c_g+1) + +! Evaporate all evaporating species + elseif(dq.lt.0.0d0) then + iter=0 +100 frt=1.0d0 + do ibin=1,nbin_a + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then +! Cannot evaporate more than whats in the bin ie ratio (aer(iv,jtotal,ibin)/dq*frqfresh(ibin)) should be less than equal to 1 + if(frqfresh(ibin).gt.0.0d0) & + frt=MAX(MIN(aer(iv,jtotal,ibin)/abs(-dq*frqfresh(ibin)),frt),0.0d0) + elseif(flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + if(frqaged(ibin).gt.0.0d0) & + frt=MAX(MIN(aer(iv,jtotal,ibin)/abs(-dq*frqaged(ibin)),frt),0.0d0) + endif ! for flagsoap + enddo ! for ibin + + + + frqtotfresh=0.0d0 + frqtotaged=0.0d0 + + do ibin=1,nbin_a + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then + aer(iv,jtotal,ibin)= & +! Since dq is negative this is evaporating aerosols + MAX(aer(iv,jtotal,ibin)+frt*dq*frqfresh(ibin),0.0d0) + if(aer(iv,jtotal,ibin).lt.tinys) frqfresh(ibin)=0.0d0 + frqtotfresh=frqtotfresh+frqfresh(ibin) + elseif (flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + aer(iv,jtotal,ibin)= & + MAX(aer(iv,jtotal,ibin)+frt*dq*frqaged(ibin),0.0d0) + if(aer(iv,jtotal,ibin).lt.tinys) frqaged(ibin)=0.0d0 + frqtotaged=frqtotaged+frqaged(ibin) + endif ! for flagsoap + enddo ! for ibin + +! Check if we should evaporate more + dq=(1.0d0-frt)*dq + if (flagsoap(iv-ipcg1_b_c_g+1).eq.2) then + if(dq.lt.-1.d-8) then ! check if d-8 is better + if(frqtotfresh.gt.tinys) then ! we have sections which are not empty + if(iter.le.itermax) then ! check infinite loop + iter = iter + 1 + do ibin = 1,nbin_a + frqfresh(ibin) = frqfresh(ibin) / frqtotfresh + enddo ! for ibin + goto 100 + endif ! for iter + endif ! frqtotfresh.gt.tinys + endif ! dq.lt.-1.d-7 + elseif (flagsoap(iv-ipcg1_b_c_g+1).eq.1) then + if(dq.lt.-1.d-8) then + if(frqtotaged.gt.tinys) then ! we have sections which are not empty + if(iter.le.itermax) then ! check infinite loop + iter = iter + 1 + do ibin = 1,nbin_a + frqaged(ibin) = frqaged(ibin) / frqtotaged + enddo + goto 100 + endif + endif + endif + + ! we need to evaporate more to achieve equilibrium + ! but we completely evaporated the species in all sections + ! or exceeded itermax + endif ! for flagsoap + +! now set the gas species concentration conservatively + gas(iv)=Ctot(iv-ipcg1_b_c_g+1) + do ibin=1,nbin_a + gas(iv)=gas(iv)-aer(iv,jtotal,ibin) + enddo + endif ! if dq.gt.0 + +120 continue + enddo ! for iv=ipcg1_b_c_g + + end subroutine equilibrium + +! This subroutine spfcn calculates the objective function fval to solve gas-particle partitioning of SOA +! Subroutine spfcn is called from within the subroutine soap + subroutine spfcn(N,Ctot,Csat,Ca,cpx,tom,fval) +! use module_data_mosaic_main +! use module_data_mosaic_aero + implicit none + real(kind=8):: Ctot(N),Csat(N),Ca(N),tom,fval,cpx + + integer i,N + fval=0.0 + do i=1, N + Ca(i)=Ctot(i)*tom/(tom+Csat(i)/1)! Replace the divisor 1 by Molecular Weights if the units for Csat(i) are ug/m3 or ng/m3 + fval=fval+Ca(i)/1 ! The divisor is set to 1 as the species are in nmol/m3 + enddo + fval=fval+cpx-tom + return + + end subroutine spfcn + + + subroutine soap(N,Ctot,Csat,Ca,Cgas,cpx) +! SOAP calculates the gas-partitioning of SOA. Adapted from PMCAMx and uses the bisection approach. +! SOAP calls subroutine spfcn which calculates the objective function for solving gas-particle partitioning +! use module_data_mosaic_main +! use module_data_mosaic_aero + + real(kind=8), parameter :: xtol = 5.0e-5 + real(kind=8):: Ctot(N),Csat(N),cpx,Ca(N),Cgas(N) + real(kind=8):: xend,dx,xmid,fend,fmid,sun + integer i,N,znum + + sun=0.0 + do i=1,N + if (Csat(i).gt.0) then + sun=sun+Ctot(i)/Csat(i) !If a species does not exist its Csat is zero + else + endif + enddo + if(cpx.lt.1e-9.and.sun.le.1.0) then !if ctots for all species are less than corr. csats and cpre is negligible + do i=1,N + Cgas(i)=Ctot(i) + Ca(i)=0.0 + enddo + goto 900 + endif + + xend=0.0 + do i=1, N + xend=xend+Ctot(i)/1 ! Replace the divisor 1 by molecular weight if the units of Ctot(i) are in ng/m3 or ug/m3 + enddo + xend=xend+cpx ! total number of moles + if (xend.gt.1e-10) then + call spfcn(N,Ctot,Csat,Ca,cpx,xend,fend) ! Calculates the objective function + else +! write (2,*) "Total no of moles less than 1e-10 bypassing soap" + goto 100 + endif + if(abs(fend).le.xtol*xend) goto 99 ! Check for tolerance + if (fend.gt.0.0) then ! The objective function is supposed to be less than equal to zero + write (2,*) "Error in SOAP" + goto 50 + endif + dx=xend-cpx + do znum=1,200 + dx=0.5*dx + xmid=xend-dx ! Find the midpoint following the bisection approach + call spfcn (N,Ctot,Csat,Ca,cpx,xmid,fmid) ! Re-calculate the objective function + if(abs(fmid).le.xtol*xmid.or.dx.le.xtol*xmid) goto 100 ! converged + if (fmid.lt.0.0) xend=xmid + enddo + write (2,*) "Error in SOAP" + write (2,*) "Error: max number of iterations reached" +50 stop + +99 xmid=xend +100 continue + do i=1, N + Ca(i)=min(Ctot(i), Ca(i)) + Cgas(i)=Ctot(i)-Ca(i) + enddo +900 continue + + +! write(2,*) xmid + return + + end subroutine soap @@ -5821,14 +7735,94 @@ subroutine aerosolmtc mw_vol(ihcl_g) = 36.5 mw_vol(inh3_g) = 17.0 mw_vol(imsa_g) = 96.0 - mw_vol(iaro1_g) = 150.0 - mw_vol(iaro2_g) = 150.0 - mw_vol(ialk1_g) = 140.0 - mw_vol(iole1_g) = 140.0 - mw_vol(iapi1_g) = 184.0 - mw_vol(iapi2_g) = 184.0 - mw_vol(ilim1_g) = 200.0 - mw_vol(ilim2_g) = 200.0 + mw_vol(ipcg1_b_c_g) =250.0 + mw_vol(ipcg2_b_c_g) =250.0 + mw_vol(ipcg3_b_c_g)=250.0 + mw_vol(ipcg4_b_c_g)=250.0 + mw_vol(ipcg5_b_c_g)=250.0 + mw_vol(ipcg6_b_c_g)=250.0 + mw_vol(ipcg7_b_c_g)=250.0 + mw_vol(ipcg8_b_c_g)=250.0 + mw_vol(ipcg9_b_c_g)=250.0 + mw_vol(iopcg1_b_c_g)=250.0 + mw_vol(iopcg2_b_c_g)=250.0 + mw_vol(iopcg3_b_c_g)=250.0 + mw_vol(iopcg4_b_c_g)=250.0 + mw_vol(iopcg5_b_c_g)=250.0 + mw_vol(iopcg6_b_c_g)=250.0 + mw_vol(iopcg7_b_c_g)=250.0 + mw_vol(iopcg8_b_c_g)=250.0 + mw_vol(ipcg1_b_o_g)=250.0 + mw_vol(ipcg2_b_o_g)=250.0 + mw_vol(ipcg3_b_o_g)=250.0 + mw_vol(ipcg4_b_o_g)=250.0 + mw_vol(ipcg5_b_o_g)=250.0 + mw_vol(ipcg6_b_o_g)=250.0 + mw_vol(ipcg7_b_o_g)=250.0 + mw_vol(ipcg8_b_o_g)=250.0 + mw_vol(ipcg9_b_o_g)=250.0 + mw_vol(iopcg1_b_o_g)=250.0 + mw_vol(iopcg2_b_o_g)=250.0 + mw_vol(iopcg3_b_o_g)=250.0 + mw_vol(iopcg4_b_o_g)=250.0 + mw_vol(iopcg5_b_o_g)=250.0 + mw_vol(iopcg6_b_o_g)=250.0 + mw_vol(iopcg7_b_o_g)=250.0 + mw_vol(iopcg8_b_o_g)=250.0 + mw_vol(ipcg1_f_c_g) =250.0 + mw_vol(ipcg2_f_c_g) =250.0 + mw_vol(ipcg3_f_c_g)=250.0 + mw_vol(ipcg4_f_c_g)=250.0 + mw_vol(ipcg5_f_c_g)=250.0 + mw_vol(ipcg6_f_c_g)=250.0 + mw_vol(ipcg7_f_c_g)=250.0 + mw_vol(ipcg8_f_c_g)=250.0 + mw_vol(ipcg9_f_c_g)=250.0 + mw_vol(iopcg1_f_c_g)=250.0 + mw_vol(iopcg2_f_c_g)=250.0 + mw_vol(iopcg3_f_c_g)=250.0 + mw_vol(iopcg4_f_c_g)=250.0 + mw_vol(iopcg5_f_c_g)=250.0 + mw_vol(iopcg6_f_c_g)=250.0 + mw_vol(iopcg7_f_c_g)=250.0 + mw_vol(iopcg8_f_c_g)=250.0 + mw_vol(ipcg1_f_o_g)=250.0 + mw_vol(ipcg2_f_o_g)=250.0 + mw_vol(ipcg3_f_o_g)=250.0 + mw_vol(ipcg4_f_o_g)=250.0 + mw_vol(ipcg5_f_o_g)=250.0 + mw_vol(ipcg6_f_o_g)=250.0 + mw_vol(ipcg7_f_o_g)=250.0 + mw_vol(ipcg8_f_o_g)=250.0 + mw_vol(ipcg9_f_o_g)=250.0 + mw_vol(iopcg1_f_o_g)=250.0 + mw_vol(iopcg2_f_o_g)=250.0 + mw_vol(iopcg3_f_o_g)=250.0 + mw_vol(iopcg4_f_o_g)=250.0 + mw_vol(iopcg5_f_o_g)=250.0 + mw_vol(iopcg6_f_o_g)=250.0 + mw_vol(iopcg7_f_o_g)=250.0 + mw_vol(iopcg8_f_o_g)=250.0 + mw_vol(iant1_c_g)=250.0 + mw_vol(iant2_c_g)=250.0 + mw_vol(iant3_c_g)=250.0 + mw_vol(iant4_c_g)=250.0 + mw_vol(iant1_o_g)=250.0 + mw_vol(iant2_o_g)=250.0 + mw_vol(iant3_o_g)=250.0 + mw_vol(iant4_o_g)=250.0 + mw_vol(ibiog1_c_g)=250.0 + mw_vol(ibiog2_c_g)=250.0 + mw_vol(ibiog3_c_g)=250.0 + mw_vol(ibiog4_c_g)=250.0 + mw_vol(ibiog1_o_g)=250.0 + mw_vol(ibiog2_o_g)=250.0 + mw_vol(ibiog3_o_g)=250.0 + mw_vol(ibiog4_o_g)=250.0 + + + + v_molar(ih2so4_g)= 42.88 v_molar(ihno3_g) = 24.11 @@ -5842,14 +7836,93 @@ subroutine aerosolmtc accom(ihcl_g) = 0.1 accom(inh3_g) = 0.1 accom(imsa_g) = 0.1 - accom(iaro1_g) = 0.1 - accom(iaro2_g) = 0.1 - accom(ialk1_g) = 0.1 - accom(iole1_g) = 0.1 - accom(iapi1_g) = 0.1 - accom(iapi2_g) = 0.1 - accom(ilim1_g) = 0.1 - accom(ilim2_g) = 0.1 + accom(ipcg1_b_c_g) =0.1 + accom(ipcg2_b_c_g) =0.1 + accom(ipcg3_b_c_g)=0.1 + accom(ipcg4_b_c_g)=0.1 + accom(ipcg5_b_c_g)=0.1 + accom(ipcg6_b_c_g)=0.1 + accom(ipcg7_b_c_g)=0.1 + accom(ipcg8_b_c_g)=0.1 + accom(ipcg9_b_c_g)=0.1 + accom(iopcg1_b_c_g)=0.1 + accom(iopcg2_b_c_g)=0.1 + accom(iopcg3_b_c_g)=0.1 + accom(iopcg4_b_c_g)=0.1 + accom(iopcg5_b_c_g)=0.1 + accom(iopcg6_b_c_g)=0.1 + accom(iopcg7_b_c_g)=0.1 + accom(iopcg8_b_c_g)=0.1 + accom(ipcg1_b_o_g)=0.1 + accom(ipcg2_b_o_g)=0.1 + accom(ipcg3_b_o_g)=0.1 + accom(ipcg4_b_o_g)=0.1 + accom(ipcg5_b_o_g)=0.1 + accom(ipcg6_b_o_g)=0.1 + accom(ipcg7_b_o_g)=0.1 + accom(ipcg8_b_o_g)=0.1 + accom(ipcg9_b_o_g)=0.1 + accom(iopcg1_b_o_g)=0.1 + accom(iopcg2_b_o_g)=0.1 + accom(iopcg3_b_o_g)=0.1 + accom(iopcg4_b_o_g)=0.1 + accom(iopcg5_b_o_g)=0.1 + accom(iopcg6_b_o_g)=0.1 + accom(iopcg7_b_o_g)=0.1 + accom(iopcg8_b_o_g)=0.1 + accom(ipcg1_f_c_g) =0.1 + accom(ipcg2_f_c_g) =0.1 + accom(ipcg3_f_c_g)=0.1 + accom(ipcg4_f_c_g)=0.1 + accom(ipcg5_f_c_g)=0.1 + accom(ipcg6_f_c_g)=0.1 + accom(ipcg7_f_c_g)=0.1 + accom(ipcg8_f_c_g)=0.1 + accom(ipcg9_f_c_g)=0.1 + accom(iopcg1_f_c_g)=0.1 + accom(iopcg2_f_c_g)=0.1 + accom(iopcg3_f_c_g)=0.1 + accom(iopcg4_f_c_g)=0.1 + accom(iopcg5_f_c_g)=0.1 + accom(iopcg6_f_c_g)=0.1 + accom(iopcg7_f_c_g)=0.1 + accom(iopcg8_f_c_g)=0.1 + accom(ipcg1_f_o_g)=0.1 + accom(ipcg2_f_o_g)=0.1 + accom(ipcg3_f_o_g)=0.1 + accom(ipcg4_f_o_g)=0.1 + accom(ipcg5_f_o_g)=0.1 + accom(ipcg6_f_o_g)=0.1 + accom(ipcg7_f_o_g)=0.1 + accom(ipcg8_f_o_g)=0.1 + accom(ipcg9_f_o_g)=0.1 + accom(iopcg1_f_o_g)=0.1 + accom(iopcg2_f_o_g)=0.1 + accom(iopcg3_f_o_g)=0.1 + accom(iopcg4_f_o_g)=0.1 + accom(iopcg5_f_o_g)=0.1 + accom(iopcg6_f_o_g)=0.1 + accom(iopcg7_f_o_g)=0.1 + accom(iopcg8_f_o_g)=0.1 + accom(iant1_c_g)=0.1 + accom(iant2_c_g)=0.1 + accom(iant3_c_g)=0.1 + accom(iant4_c_g)=0.1 + accom(iant1_o_g)=0.1 + accom(iant2_o_g)=0.1 + accom(iant3_o_g)=0.1 + accom(iant4_o_g)=0.1 + accom(ibiog1_c_g)=0.1 + accom(ibiog2_c_g)=0.1 + accom(ibiog3_c_g)=0.1 + accom(ibiog4_c_g)=0.1 + accom(ibiog1_o_g)=0.1 + accom(ibiog2_o_g)=0.1 + accom(ibiog3_o_g)=0.1 + accom(ibiog4_o_g)=0.1 + + + ! quadrature weights xghq(1) = 0.70710678 @@ -5868,9 +7941,9 @@ subroutine aerosolmtc enddo ! soa - do iv = iaro1_g, ngas_volatile + do iv = ipcg1_b_c_g, ngas_volatile speed = mean_molecular_speed(t_k,mw_vol(iv)) ! cm/s - dg(iv) = 0.02 ! cm^2/s + dg(iv) = 0.1 ! cm^2/s (increased from 0.2 to 0.035 by Manish Shrivastava) freepath(iv) = 3.*dg(iv)/speed enddo @@ -5922,7 +7995,8 @@ subroutine aerosolmtc do 21 iv = 1, ngas_volatile kn = 2.*freepath(iv)/dp_avg fkn = fuchs_sutugin(kn,accom(iv)) - kg(iv,ibin) = cdum*dg(iv)*fkn ! 1/s + kg(iv,ibin) = cdum*dg(iv)*fkn ! 1/s!Increased by a factor of 10000 by Manish Shrivastava to force to equilibrium +! fraceq(iv,ibin)=num_a(ibin)*dp_wet_a(ibin)/(kn/accom(iv)+1) 21 continue 11 continue @@ -6027,19 +8101,100 @@ subroutine calc_dry_n_wet_aerosol_props(ibin) comp_a(joc) = aer(ioc_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) comp_a(jbc) = aer(ibc_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) comp_a(join) = aer(ioin_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jaro1)= aer(iaro1_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jaro2)= aer(iaro2_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jalk1)= aer(ialk1_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jole1)= aer(iole1_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(japi1)= aer(iapi1_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(japi2)= aer(iapi2_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jlim1)= aer(ilim1_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) - comp_a(jlim2)= aer(ilim2_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg1_b_c)= aer(ipcg1_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg2_b_c)= aer(ipcg2_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg3_b_c)= aer(ipcg3_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg4_b_c)= aer(ipcg4_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg5_b_c)= aer(ipcg5_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg6_b_c)= aer(ipcg6_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg7_b_c)= aer(ipcg7_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg8_b_c)= aer(ipcg8_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg9_b_c)= aer(ipcg9_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg1_b_c)= aer(iopcg1_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg2_b_c)= aer(iopcg2_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg3_b_c)= aer(iopcg3_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg4_b_c)= aer(iopcg4_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg5_b_c)= aer(iopcg5_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg6_b_c)= aer(iopcg6_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg7_b_c)= aer(iopcg7_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg8_b_c)= aer(iopcg8_b_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg1_b_o)= aer(ipcg1_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg2_b_o)= aer(ipcg2_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg3_b_o)= aer(ipcg3_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg4_b_o)= aer(ipcg4_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg5_b_o)= aer(ipcg5_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg6_b_o)= aer(ipcg6_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg7_b_o)= aer(ipcg7_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg8_b_o)= aer(ipcg8_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg9_b_o)= aer(ipcg9_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg1_b_o)= aer(iopcg1_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg2_b_o)= aer(iopcg2_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg3_b_o)= aer(iopcg3_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg4_b_o)= aer(iopcg4_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg5_b_o)= aer(iopcg5_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg6_b_o)= aer(iopcg6_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg7_b_o)= aer(iopcg7_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg8_b_o)= aer(iopcg8_b_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg1_f_c)= aer(ipcg1_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg2_f_c)= aer(ipcg2_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg3_f_c)= aer(ipcg3_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg4_f_c)= aer(ipcg4_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg5_f_c)= aer(ipcg5_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg6_f_c)= aer(ipcg6_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg7_f_c)= aer(ipcg7_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg8_f_c)= aer(ipcg8_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg9_f_c)= aer(ipcg9_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg1_f_c)= aer(iopcg1_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg2_f_c)= aer(iopcg2_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg3_f_c)= aer(iopcg3_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg4_f_c)= aer(iopcg4_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg5_f_c)= aer(iopcg5_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg6_f_c)= aer(iopcg6_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg7_f_c)= aer(iopcg7_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg8_f_c)= aer(iopcg8_f_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg1_f_o)= aer(ipcg1_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg2_f_o)= aer(ipcg2_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg3_f_o)= aer(ipcg3_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg4_f_o)= aer(ipcg4_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg5_f_o)= aer(ipcg5_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg6_f_o)= aer(ipcg6_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg7_f_o)= aer(ipcg7_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg8_f_o)= aer(ipcg8_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jpcg9_f_o)= aer(ipcg9_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg1_f_o)= aer(iopcg1_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg2_f_o)= aer(iopcg2_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg3_f_o)= aer(iopcg3_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg4_f_o)= aer(iopcg4_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg5_f_o)= aer(iopcg5_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg6_f_o)= aer(iopcg6_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg7_f_o)= aer(iopcg7_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jopcg8_f_o)= aer(iopcg8_f_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant1_c)= aer(iant1_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant2_c)= aer(iant2_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant3_c)= aer(iant3_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant4_c)= aer(iant4_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant1_o)= aer(iant1_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant2_o)= aer(iant2_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant3_o)= aer(iant3_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jant4_o)= aer(iant4_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog1_c)= aer(ibiog1_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog2_c)= aer(ibiog2_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog3_c)= aer(ibiog3_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog4_c)= aer(ibiog4_c_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog1_o)= aer(ibiog1_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog2_o)= aer(ibiog2_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog3_o)= aer(ibiog3_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + comp_a(jbiog4_o)= aer(ibiog4_o_a,jtotal,ibin)*mw_comp_a(je)*1.e-15 ! g/cc(air) + + + comp_a(jh2o) = water_a(ibin)*1.e-3 ! g/cc(air) ri_dum = (0.0,0.0) do jc = 1, naercomp + if (dens_comp_a(jc).gt.0) then ri_dum = ri_dum + ref_index_a(jc)*comp_a(jc)/dens_comp_a(jc) + endif enddo ri_avg_a(ibin) = ri_dum/vol_wet_a(ibin) @@ -9037,7 +11192,8 @@ subroutine load_mosaic_parameters ! astem parameters nmax_astem = 200 ! max number of time steps in astem - alpha_astem = 0.5 ! choose a value between 0.01 and 1.0 + alpha_astem = 0.05 ! choose a value between 0.01 and 1.0 +! Changed alpha_astem from 0.5 to 0.05 by Manish Shrivastava on 01/08/2010 rtol_eqb_astem = 0.01 ! equilibrium tolerance in astem ptol_mol_astem = 0.01 ! mol percent tolerance in astem @@ -9054,14 +11210,93 @@ subroutine load_mosaic_parameters ihcl_g = 3 ! ioa inh3_g = 4 ! ioa imsa_g = 5 ! ioa - iaro1_g = 6 ! soa (secondary organic aerosol) - iaro2_g = 7 ! soa - ialk1_g = 8 ! soa - iole1_g = 9 ! soa - iapi1_g = 10 ! soa - iapi2_g = 11 ! soa - ilim1_g = 12 ! soa - ilim2_g = 13 ! soa + ipcg1_b_c_g =6 + ipcg2_b_c_g =7 + ipcg3_b_c_g =8 + ipcg4_b_c_g =9 + ipcg5_b_c_g =10 + ipcg6_b_c_g =11 + ipcg7_b_c_g =12 + ipcg8_b_c_g =13 + ipcg9_b_c_g =14 + ipcg1_b_o_g =15 + ipcg2_b_o_g =16 + ipcg3_b_o_g =17 + ipcg4_b_o_g =18 + ipcg5_b_o_g =19 + ipcg6_b_o_g =20 + ipcg7_b_o_g =21 + ipcg8_b_o_g =22 + ipcg9_b_o_g =23 + iopcg1_b_c_g =24 + iopcg2_b_c_g = 25 + iopcg3_b_c_g =26 + iopcg4_b_c_g =27 + iopcg5_b_c_g =28 + iopcg6_b_c_g =29 + iopcg7_b_c_g =30 + iopcg8_b_c_g =31 + iopcg1_b_o_g =32 + iopcg2_b_o_g =33 + iopcg3_b_o_g =34 + iopcg4_b_o_g =35 + iopcg5_b_o_g =36 + iopcg6_b_o_g =37 + iopcg7_b_o_g =38 + iopcg8_b_o_g =39 + ipcg1_f_c_g =40 + ipcg2_f_c_g =41 + ipcg3_f_c_g =42 + ipcg4_f_c_g =43 + ipcg5_f_c_g =44 + ipcg6_f_c_g =45 + ipcg7_f_c_g =46 + ipcg8_f_c_g =47 + ipcg9_f_c_g =48 + ipcg1_f_o_g =49 + ipcg2_f_o_g =50 + ipcg3_f_o_g =51 + ipcg4_f_o_g =52 + ipcg5_f_o_g =53 + ipcg6_f_o_g =54 + ipcg7_f_o_g =55 + ipcg8_f_o_g =56 + ipcg9_f_o_g =57 + iopcg1_f_c_g =58 + iopcg2_f_c_g =59 + iopcg3_f_c_g =60 + iopcg4_f_c_g =61 + iopcg5_f_c_g =62 + iopcg6_f_c_g =63 + iopcg7_f_c_g =64 + iopcg8_f_c_g =65 + iopcg1_f_o_g =66 + iopcg2_f_o_g =67 + iopcg3_f_o_g =68 + iopcg4_f_o_g =69 + iopcg5_f_o_g =70 + iopcg6_f_o_g =71 + iopcg7_f_o_g =72 + iopcg8_f_o_g =73 + iant1_c_g =74 + iant2_c_g =75 + iant3_c_g =76 + iant4_c_g =77 + iant1_o_g =78 + iant2_o_g =79 + iant3_o_g =80 + iant4_o_g =81 + ibiog1_c_g =82 + ibiog2_c_g =83 + ibiog3_c_g =84 + ibiog4_c_g =85 + ibiog1_o_g =86 + ibiog2_o_g =87 + ibiog3_o_g =88 + ibiog4_o_g =89 + + + ! ico2_g = 14 ! currently not used ! @@ -9071,20 +11306,96 @@ subroutine load_mosaic_parameters icl_a = 3 ! <-> ihcl_g inh4_a = 4 ! <-> inh3_g imsa_a = 5 ! <-> imsa_g - iaro1_a = 6 ! <-> iaro1_g - iaro2_a = 7 ! <-> iaro2_g - ialk1_a = 8 ! <-> ialk1_g - iole1_a = 9 ! <-> iole1_g - iapi1_a = 10 ! <-> iapi1_g - iapi2_a = 11 ! <-> iapi2_g - ilim1_a = 12 ! <-> ilim1_g - ilim2_a = 13 ! <-> ilim2_g - ico3_a = 14 ! <-> ico2_g - ina_a = 15 - ica_a = 16 - ioin_a = 17 - ioc_a = 18 - ibc_a = 19 + ipcg1_b_c_a =6 + ipcg2_b_c_a =7 + ipcg3_b_c_a =8 + ipcg4_b_c_a =9 + ipcg5_b_c_a =10 + ipcg6_b_c_a =11 + ipcg7_b_c_a =12 + ipcg8_b_c_a =13 + ipcg9_b_c_a =14 + ipcg1_b_o_a =15 + ipcg2_b_o_a =16 + ipcg3_b_o_a =17 + ipcg4_b_o_a =18 + ipcg5_b_o_a =19 + ipcg6_b_o_a =20 + ipcg7_b_o_a =21 + ipcg8_b_o_a =22 + ipcg9_b_o_a =23 + iopcg1_b_c_a =24 + iopcg2_b_c_a = 25 + iopcg3_b_c_a =26 + iopcg4_b_c_a =27 + iopcg5_b_c_a =28 + iopcg6_b_c_a =29 + iopcg7_b_c_a =30 + iopcg8_b_c_a =31 + iopcg1_b_o_a =32 + iopcg2_b_o_a = 33 + iopcg3_b_o_a =34 + iopcg4_b_o_a =35 + iopcg5_b_o_a =36 + iopcg6_b_o_a =37 + iopcg7_b_o_a =38 + iopcg8_b_o_a =39 + ipcg1_f_c_a =40 + ipcg2_f_c_a =41 + ipcg3_f_c_a =42 + ipcg4_f_c_a =43 + ipcg5_f_c_a =44 + ipcg6_f_c_a =45 + ipcg7_f_c_a =46 + ipcg8_f_c_a =47 + ipcg9_f_c_a =48 + ipcg1_f_o_a =49 + ipcg2_f_o_a =50 + ipcg3_f_o_a =51 + ipcg4_f_o_a =52 + ipcg5_f_o_a =53 + ipcg6_f_o_a =54 + ipcg7_f_o_a =55 + ipcg8_f_o_a =56 + ipcg9_f_o_a =57 + iopcg1_f_c_a =58 + iopcg2_f_c_a =59 + iopcg3_f_c_a =60 + iopcg4_f_c_a =61 + iopcg5_f_c_a =62 + iopcg6_f_c_a =63 + iopcg7_f_c_a =64 + iopcg8_f_c_a =65 + iopcg1_f_o_a =66 + iopcg2_f_o_a =67 + iopcg3_f_o_a =68 + iopcg4_f_o_a =69 + iopcg5_f_o_a =70 + iopcg6_f_o_a =71 + iopcg7_f_o_a =72 + iopcg8_f_o_a =73 + iant1_c_a =74 + iant2_c_a =75 + iant3_c_a =76 + iant4_c_a =77 + iant1_o_a =78 + iant2_o_a =79 + iant3_o_a =80 + iant4_o_a =81 + ibiog1_c_a =82 + ibiog2_c_a =83 + ibiog3_c_a =84 + ibiog4_c_a =85 + ibiog1_o_a =86 + ibiog2_o_a =87 + ibiog3_o_a =88 + ibiog4_o_a =89 + ico3_a = 90 ! <-> ico2_g ! ico3_a was 14 earlier, changed to 82 by Manish Shrivastava + ina_a = 91 + ica_a = 92 + ioin_a = 93 + ioc_a = 94 + ibc_a = 95 ! electrolyte indices (used for water content calculations) @@ -9114,15 +11425,91 @@ subroutine load_mosaic_parameters joc = 23 ! insoluble - part of naercomp jbc = 24 ! insoluble - part of naercomp join = 25 ! insoluble - part of naercomp - jaro1 = 26 ! insoluble - part of naercomp - jaro2 = 27 ! insoluble - part of naercomp - jalk1 = 28 ! insoluble - part of naercomp - jole1 = 29 ! insoluble - part of naercomp - japi1 = 30 ! insoluble - part of naercomp - japi2 = 31 ! insoluble - part of naercomp - jlim1 = 32 ! insoluble - part of naercomp - jlim2 = 33 ! insoluble - part of naercomp - jh2o = 34 ! water - part of naercomp + jpcg1_b_c =26 + jpcg2_b_c =27 + jpcg3_b_c =28 + jpcg4_b_c =29 + jpcg5_b_c =30 + jpcg6_b_c =31 + jpcg7_b_c =32 + jpcg8_b_c =33 + jpcg9_b_c =34 + jpcg1_b_o =35 + jpcg2_b_o =36 + jpcg3_b_o =37 + jpcg4_b_o =38 + jpcg5_b_o =39 + jpcg6_b_o =40 + jpcg7_b_o =41 + jpcg8_b_o =42 + jpcg9_b_o =43 + jopcg1_b_c =44 + jopcg2_b_c =45 + jopcg3_b_c =46 + jopcg4_b_c =47 + jopcg5_b_c =48 + jopcg6_b_c =49 + jopcg7_b_c =50 + jopcg8_b_c =51 + jopcg1_b_o =52 + jopcg2_b_o =53 + jopcg3_b_o =54 + jopcg4_b_o =55 + jopcg5_b_o =56 + jopcg6_b_o =57 + jopcg7_b_o =58 + jopcg8_b_o =59 + jpcg1_f_c =60 + jpcg2_f_c =61 + jpcg3_f_c =62 + jpcg4_f_c =63 + jpcg5_f_c =64 + jpcg6_f_c =65 + jpcg7_f_c =66 + jpcg8_f_c =67 + jpcg9_f_c =68 + jpcg1_f_o =69 + jpcg2_f_o =70 + jpcg3_f_o =71 + jpcg4_f_o =72 + jpcg5_f_o =73 + jpcg6_f_o =74 + jpcg7_f_o =75 + jpcg8_f_o =76 + jpcg9_f_o =77 + jopcg1_f_c =78 + jopcg2_f_c =79 + jopcg3_f_c =80 + jopcg4_f_c =81 + jopcg5_f_c =82 + jopcg6_f_c =83 + jopcg7_f_c =84 + jopcg8_f_c =85 + jopcg1_f_o =86 + jopcg2_f_o =87 + jopcg3_f_o =88 + jopcg4_f_o =89 + jopcg5_f_o =90 + jopcg6_f_o =91 + jopcg7_f_o =92 + jopcg8_f_o =93 + jant1_c =94 + jant2_c =95 + jant3_c =96 + jant4_c =97 + jant1_o =98 + jant2_o =99 + jant3_o =100 + jant4_o =101 + jbiog1_c =102 + jbiog2_c =103 + jbiog3_c =104 + jbiog4_c =105 + jbiog1_o =106 + jbiog2_o =107 + jbiog3_o =108 + jbiog4_o =109 + jh2o = 110 ! water - part of naercomp ! local aerosol ions @@ -9159,14 +11546,90 @@ subroutine load_mosaic_parameters aer_name(ica_a) = 'ca ' aer_name(ibc_a) = 'bc ' aer_name(ioin_a) = 'oin' - aer_name(iaro1_a)= 'aro1' - aer_name(iaro2_a)= 'aro2' - aer_name(ialk1_a)= 'alk1' - aer_name(iole1_a)= 'ole1' - aer_name(iapi1_a)= 'api1' - aer_name(iapi2_a)= 'api2' - aer_name(ilim1_a)= 'lim1' - aer_name(ilim2_a)= 'lim2' + aer_name(ipcg1_b_c_a)="pcg1_b_c" + aer_name(ipcg2_b_c_a)="pcg2_b_c" + aer_name(ipcg3_b_c_a)="pcg3_b_c" + aer_name(ipcg4_b_c_a)="pcg4_b_c" + aer_name(ipcg5_b_c_a)="pcg5_b_c" + aer_name(ipcg6_b_c_a)="pcg6_b_c" + aer_name(ipcg7_b_c_a)="pcg7_b_c" + aer_name(ipcg8_b_c_a)="pcg8_b_c" + aer_name(ipcg9_b_c_a)="pcg9_b_c" + aer_name(iopcg1_b_c_a)="opcg1_b_c" + aer_name(iopcg2_b_c_a)="opcg2_b_c" + aer_name(iopcg3_b_c_a)="opcg3_b_c" + aer_name(iopcg4_b_c_a)="opcg4_b_c" + aer_name(iopcg5_b_c_a)="opcg5_b_c" + aer_name(iopcg6_b_c_a)="opcg6_b_c" + aer_name(iopcg7_b_c_a)="opcg7_b_c" + aer_name(iopcg8_b_c_a)="opcg8_b_c" + aer_name(ipcg1_b_o_a)="pcg1_b_o" + aer_name(ipcg2_b_o_a)="pcg2_b_o" + aer_name(ipcg3_b_o_a)="pcg3_b_o" + aer_name(ipcg4_b_o_a)="pcg4_b_o" + aer_name(ipcg5_b_o_a)="pcg5_b_o" + aer_name(ipcg6_b_o_a)="pcg6_b_o" + aer_name(ipcg7_b_o_a)="pcg7_b_o" + aer_name(ipcg8_b_o_a)="pcg8_b_o" + aer_name(ipcg9_b_o_a)="pcg9_b_o" + aer_name(iopcg1_b_o_a)="opcg1_b_o" + aer_name(iopcg2_b_o_a)="opcg2_b_o" + aer_name(iopcg3_b_o_a)="opcg3_b_o" + aer_name(iopcg4_b_o_a)="opcg4_b_o" + aer_name(iopcg5_b_o_a)="opcg5_b_o" + aer_name(iopcg6_b_o_a)="opcg6_b_o" + aer_name(iopcg7_b_o_a)="opcg7_b_o" + aer_name(iopcg8_b_o_a)="opcg8_b_o" + aer_name(ipcg1_f_c_a)="pcg1_f_c" + aer_name(ipcg2_f_c_a)="pcg2_f_c" + aer_name(ipcg3_f_c_a)="pcg3_f_c" + aer_name(ipcg4_f_c_a)="pcg4_f_c" + aer_name(ipcg5_f_c_a)="pcg5_f_c" + aer_name(ipcg6_f_c_a)="pcg6_f_c" + aer_name(ipcg7_f_c_a)="pcg7_f_c" + aer_name(ipcg8_f_c_a)="pcg8_f_c" + aer_name(ipcg9_f_c_a)="pcg9_f_c" + aer_name(iopcg1_f_c_a)="opcg1_f_c" + aer_name(iopcg2_f_c_a)="opcg2_f_c" + aer_name(iopcg3_f_c_a)="opcg3_f_c" + aer_name(iopcg4_f_c_a)="opcg4_f_c" + aer_name(iopcg5_f_c_a)="opcg5_f_c" + aer_name(iopcg6_f_c_a)="opcg6_f_c" + aer_name(iopcg7_f_c_a)="opcg7_f_c" + aer_name(iopcg8_f_c_a)="opcg8_f_c" + aer_name(ipcg1_f_o_a)="pcg1_f_o" + aer_name(ipcg2_f_o_a)="pcg2_f_o" + aer_name(ipcg3_f_o_a)="pcg3_f_o" + aer_name(ipcg4_f_o_a)="pcg4_f_o" + aer_name(ipcg5_f_o_a)="pcg5_f_o" + aer_name(ipcg6_f_o_a)="pcg6_f_o" + aer_name(ipcg7_f_o_a)="pcg7_f_o" + aer_name(ipcg8_f_o_a)="pcg8_f_o" + aer_name(ipcg9_f_o_a)="pcg9_f_o" + aer_name(iopcg1_f_o_a)="opcg1_f_o" + aer_name(iopcg2_f_o_a)="opcg2_f_o" + aer_name(iopcg3_f_o_a)="opcg3_f_o" + aer_name(iopcg4_f_o_a)="opcg4_f_o" + aer_name(iopcg5_f_o_a)="opcg5_f_o" + aer_name(iopcg6_f_o_a)="opcg6_f_o" + aer_name(iopcg7_f_o_a)="opcg7_f_o" + aer_name(iopcg8_f_o_a)="opcg8_f_o" + aer_name(iant1_c_a)="ant1_c" + aer_name(iant2_c_a)="ant2_c" + aer_name(iant3_c_a)="ant3_c" + aer_name(iant4_c_a)="ant4_c" + aer_name(iant1_o_a)="ant1_o" + aer_name(iant2_o_a)="ant2_o" + aer_name(iant3_o_a)="ant3_o" + aer_name(iant4_o_a)="ant4_o" + aer_name(ibiog1_c_a)="biog1_c" + aer_name(ibiog2_c_a)="biog2_c" + aer_name(ibiog3_c_a)="biog3_c" + aer_name(ibiog4_c_a)="biog4_c" + aer_name(ibiog1_o_a)="biog1_o" + aer_name(ibiog2_o_a)="biog2_o" + aer_name(ibiog3_o_a)="biog3_o" + aer_name(ibiog4_o_a)="biog4_o" ! names of gas species gas_name(ih2so4_g) = 'h2so4' @@ -9174,14 +11637,90 @@ subroutine load_mosaic_parameters gas_name(ihcl_g) = 'hcl ' gas_name(inh3_g) = 'nh3 ' gas_name(imsa_g) = "msa " - gas_name(iaro1_g) = "aro1 " - gas_name(iaro2_g) = "aro2 " - gas_name(ialk1_g) = "alk1 " - gas_name(iole1_g) = "ole1 " - gas_name(iapi1_g) = "api1 " - gas_name(iapi2_g) = "api2 " - gas_name(ilim1_g) = "lim1 " - gas_name(ilim2_g) = "lim2 " + gas_name(ipcg1_b_c_g)="pcg1_b_c" + gas_name(ipcg2_b_c_g)="pcg2_b_c" + gas_name(ipcg3_b_c_g)="pcg3_b_c" + gas_name(ipcg4_b_c_g)="pcg4_b_c" + gas_name(ipcg5_b_c_g)="pcg5_b_c" + gas_name(ipcg6_b_c_g)="pcg6_b_c" + gas_name(ipcg7_b_c_g)="pcg7_b_c" + gas_name(ipcg8_b_c_g)="pcg8_b_c" + gas_name(ipcg9_b_c_g)="pcg9_b_c" + gas_name(iopcg1_b_c_g)="opcg1_b_c" + gas_name(iopcg2_b_c_g)="opcg2_b_c" + gas_name(iopcg3_b_c_g)="opcg3_b_c" + gas_name(iopcg4_b_c_g)="opcg4_b_c" + gas_name(iopcg5_b_c_g)="opcg5_b_c" + gas_name(iopcg6_b_c_g)="opcg6_b_c" + gas_name(iopcg7_b_c_g)="opcg7_b_c" + gas_name(iopcg8_b_c_g)="opcg8_b_c" + gas_name(ipcg1_b_o_g)="pcg1_b_o" + gas_name(ipcg2_b_o_g)="pcg2_b_o" + gas_name(ipcg3_b_o_g)="pcg3_b_o" + gas_name(ipcg4_b_o_g)="pcg4_b_o" + gas_name(ipcg5_b_o_g)="pcg5_b_o" + gas_name(ipcg6_b_o_g)="pcg6_b_o" + gas_name(ipcg7_b_o_g)="pcg7_b_o" + gas_name(ipcg8_b_o_g)="pcg8_b_o" + gas_name(ipcg9_b_o_g)="pcg9_b_o" + gas_name(iopcg1_b_o_g)="opcg1_b_o" + gas_name(iopcg2_b_o_g)="opcg2_b_o" + gas_name(iopcg3_b_o_g)="opcg3_b_o" + gas_name(iopcg4_b_o_g)="opcg4_b_o" + gas_name(iopcg5_b_o_g)="opcg5_b_o" + gas_name(iopcg6_b_o_g)="opcg6_b_o" + gas_name(iopcg7_b_o_g)="opcg7_b_o" + gas_name(iopcg8_b_o_g)="opcg8_b_o" + gas_name(ipcg1_f_c_g)="pcg1_f_c" + gas_name(ipcg2_f_c_g)="pcg2_f_c" + gas_name(ipcg3_f_c_g)="pcg3_f_c" + gas_name(ipcg4_f_c_g)="pcg4_f_c" + gas_name(ipcg5_f_c_g)="pcg5_f_c" + gas_name(ipcg6_f_c_g)="pcg6_f_c" + gas_name(ipcg7_f_c_g)="pcg7_f_c" + gas_name(ipcg8_f_c_g)="pcg8_f_c" + gas_name(ipcg9_f_c_g)="pcg9_f_c" + gas_name(iopcg1_f_c_g)="opcg1_f_c" + gas_name(iopcg2_f_c_g)="opcg2_f_c" + gas_name(iopcg3_f_c_g)="opcg3_f_c" + gas_name(iopcg4_f_c_g)="opcg4_f_c" + gas_name(iopcg5_f_c_g)="opcg5_f_c" + gas_name(iopcg6_f_c_g)="opcg6_f_c" + gas_name(iopcg7_f_c_g)="opcg7_f_c" + gas_name(iopcg8_f_c_g)="opcg8_f_c" + gas_name(ipcg1_f_o_g)="pcg1_f_o" + gas_name(ipcg2_f_o_g)="pcg2_f_o" + gas_name(ipcg3_f_o_g)="pcg3_f_o" + gas_name(ipcg4_f_o_g)="pcg4_f_o" + gas_name(ipcg5_f_o_g)="pcg5_f_o" + gas_name(ipcg6_f_o_g)="pcg6_f_o" + gas_name(ipcg7_f_o_g)="pcg7_f_o" + gas_name(ipcg8_f_o_g)="pcg8_f_o" + gas_name(ipcg9_f_o_g)="pcg9_f_o" + gas_name(iopcg1_f_o_g)="opcg1_f_o" + gas_name(iopcg2_f_o_g)="opcg2_f_o" + gas_name(iopcg3_f_o_g)="opcg3_f_o" + gas_name(iopcg4_f_o_g)="opcg4_f_o" + gas_name(iopcg5_f_o_g)="opcg5_f_o" + gas_name(iopcg6_f_o_g)="opcg6_f_o" + gas_name(iopcg7_f_o_g)="opcg7_f_o" + gas_name(iopcg8_f_o_g)="opcg8_f_o" + gas_name(iant1_c_g)="ant1_c" + gas_name(iant2_c_g)="ant2_c" + gas_name(iant3_c_g)="ant3_c" + gas_name(iant4_c_g)="ant4_c" + gas_name(iant1_o_g)="ant1_o" + gas_name(iant2_o_g)="ant2_o" + gas_name(iant3_o_g)="ant3_o" + gas_name(iant4_o_g)="ant4_o" + gas_name(ibiog1_c_g)="biog1_c" + gas_name(ibiog2_c_g)="biog2_c" + gas_name(ibiog3_c_g)="biog3_c" + gas_name(ibiog4_c_g)="biog4_c" + gas_name(ibiog1_o_g)="biog1_o" + gas_name(ibiog2_o_g)="biog2_o" + gas_name(ibiog3_o_g)="biog3_o" + gas_name(ibiog4_o_g)="biog4_o" ! names of electrolytes ename(jnh4so4) = 'amso4' @@ -9308,37 +11847,189 @@ subroutine load_mosaic_parameters dens_comp_a(joc) = 1.0 dens_comp_a(jbc) = 1.8 dens_comp_a(join) = 2.6 - dens_comp_a(jaro1) = 1.0 - dens_comp_a(jaro2) = 1.0 - dens_comp_a(jalk1) = 1.0 - dens_comp_a(jole1) = 1.0 - dens_comp_a(japi1) = 1.0 - dens_comp_a(japi2) = 1.0 - dens_comp_a(jlim1) = 1.0 - dens_comp_a(jlim2) = 1.0 dens_comp_a(jh2o) = 1.0 - + dens_comp_a(ipcg1_b_c_a) =1.0 + dens_comp_a(ipcg2_b_c_a) =1.0 + dens_comp_a(ipcg3_b_c_a)=1.0 + dens_comp_a(ipcg4_b_c_a)=1.0 + dens_comp_a(ipcg5_b_c_a)=1.0 + dens_comp_a(ipcg6_b_c_a)=1.0 + dens_comp_a(ipcg7_b_c_a)=1.0 + dens_comp_a(ipcg8_b_c_a)=1.0 + dens_comp_a(ipcg9_b_c_a)=1.0 + dens_comp_a(iopcg1_b_c_a)=1.0 + dens_comp_a(iopcg2_b_c_a)=1.0 + dens_comp_a(iopcg3_b_c_a)=1.0 + dens_comp_a(iopcg4_b_c_a)=1.0 + dens_comp_a(iopcg5_b_c_a)=1.0 + dens_comp_a(iopcg6_b_c_a)=1.0 + dens_comp_a(iopcg7_b_c_a)=1.0 + dens_comp_a(iopcg8_b_c_a)=1.0 + dens_comp_a(ipcg1_b_o_a)=1.0 + dens_comp_a(ipcg2_b_o_a)=1.0 + dens_comp_a(ipcg3_b_o_a)=1.0 + dens_comp_a(ipcg4_b_o_a)=1.0 + dens_comp_a(ipcg5_b_o_a)=1.0 + dens_comp_a(ipcg6_b_o_a)=1.0 + dens_comp_a(ipcg7_b_o_a)=1.0 + dens_comp_a(ipcg8_b_o_a)=1.0 + dens_comp_a(ipcg9_b_o_a)=1.0 + dens_comp_a(iopcg1_b_o_a)=1.0 + dens_comp_a(iopcg2_b_o_a)=1.0 + dens_comp_a(iopcg3_b_o_a)=1.0 + dens_comp_a(iopcg4_b_o_a)=1.0 + dens_comp_a(iopcg5_b_o_a)=1.0 + dens_comp_a(iopcg6_b_o_a)=1.0 + dens_comp_a(iopcg7_b_o_a)=1.0 + dens_comp_a(iopcg8_b_o_a)=1.0 + dens_comp_a(ipcg1_f_c_a) =1.0 + dens_comp_a(ipcg2_f_c_a) =1.0 + dens_comp_a(ipcg3_f_c_a)=1.0 + dens_comp_a(ipcg4_f_c_a)=1.0 + dens_comp_a(ipcg5_f_c_a)=1.0 + dens_comp_a(ipcg6_f_c_a)=1.0 + dens_comp_a(ipcg7_f_c_a)=1.0 + dens_comp_a(ipcg8_f_c_a)=1.0 + dens_comp_a(ipcg9_f_c_a)=1.0 + dens_comp_a(iopcg1_f_c_a)=1.0 + dens_comp_a(iopcg2_f_c_a)=1.0 + dens_comp_a(iopcg3_f_c_a)=1.0 + dens_comp_a(iopcg4_f_c_a)=1.0 + dens_comp_a(iopcg5_f_c_a)=1.0 + dens_comp_a(iopcg6_f_c_a)=1.0 + dens_comp_a(iopcg7_f_c_a)=1.0 + dens_comp_a(iopcg8_f_c_a)=1.0 + dens_comp_a(ipcg1_f_o_a)=1.0 + dens_comp_a(ipcg2_f_o_a)=1.0 + dens_comp_a(ipcg3_f_o_a)=1.0 + dens_comp_a(ipcg4_f_o_a)=1.0 + dens_comp_a(ipcg5_f_o_a)=1.0 + dens_comp_a(ipcg6_f_o_a)=1.0 + dens_comp_a(ipcg7_f_o_a)=1.0 + dens_comp_a(ipcg8_f_o_a)=1.0 + dens_comp_a(ipcg9_f_o_a)=1.0 + dens_comp_a(iopcg1_f_o_a)=1.0 + dens_comp_a(iopcg2_f_o_a)=1.0 + dens_comp_a(iopcg3_f_o_a)=1.0 + dens_comp_a(iopcg4_f_o_a)=1.0 + dens_comp_a(iopcg5_f_o_a)=1.0 + dens_comp_a(iopcg6_f_o_a)=1.0 + dens_comp_a(iopcg7_f_o_a)=1.0 + dens_comp_a(iopcg8_f_o_a)=1.0 + dens_comp_a(iant1_c_a)=1.0 + dens_comp_a(iant2_c_a)=1.0 + dens_comp_a(iant3_c_a)=1.0 + dens_comp_a(iant4_c_a)=1.0 + dens_comp_a(iant1_o_a)=1.0 + dens_comp_a(iant2_o_a)=1.0 + dens_comp_a(iant3_o_a)=1.0 + dens_comp_a(iant4_o_a)=1.0 + dens_comp_a(ibiog1_c_a)=1.0 + dens_comp_a(ibiog2_c_a)=1.0 + dens_comp_a(ibiog3_c_a)=1.0 + dens_comp_a(ibiog4_c_a)=1.0 + dens_comp_a(ibiog1_o_a)=1.0 + dens_comp_a(ibiog2_o_a)=1.0 + dens_comp_a(ibiog3_o_a)=1.0 + dens_comp_a(ibiog4_o_a)=1.0 ! molecular weights of generic aerosol species mw_aer_mac(iso4_a) = 96.0 mw_aer_mac(ino3_a) = 62.0 mw_aer_mac(icl_a) = 35.5 - mw_aer_mac(imsa_a) = 95.0 ! ch3so3 + mw_aer_mac(imsa_a) = 95.0 ! ch3so3 mw_aer_mac(ico3_a) = 60.0 mw_aer_mac(inh4_a) = 18.0 mw_aer_mac(ina_a) = 23.0 mw_aer_mac(ica_a) = 40.0 - mw_aer_mac(ioin_a) = 1.0 ! not used - mw_aer_mac(ibc_a) = 1.0 ! not used - mw_aer_mac(ioc_a) = 1.0 ! 200 assumed for primary organics - mw_aer_mac(iaro1_a)= 150.0 - mw_aer_mac(iaro2_a)= 150.0 - mw_aer_mac(ialk1_a)= 140.0 - mw_aer_mac(iole1_a)= 140.0 - mw_aer_mac(iapi1_a)= 184.0 - mw_aer_mac(iapi2_a)= 184.0 - mw_aer_mac(ilim1_a)= 200.0 - mw_aer_mac(ilim2_a)= 200.0 + mw_aer_mac(ioin_a) = 1.0 ! not used + mw_aer_mac(ibc_a) = 1.0 ! not used + mw_aer_mac(ioc_a) = 250.0 ! 200 assumed for primary organics + mw_aer_mac(ipcg1_b_c_a) =250.0 + mw_aer_mac(ipcg2_b_c_a) =250.0 + mw_aer_mac(ipcg3_b_c_a)=250.0 + mw_aer_mac(ipcg4_b_c_a)=250.0 + mw_aer_mac(ipcg5_b_c_a)=250.0 + mw_aer_mac(ipcg6_b_c_a)=250.0 + mw_aer_mac(ipcg7_b_c_a)=250.0 + mw_aer_mac(ipcg8_b_c_a)=250.0 + mw_aer_mac(ipcg9_b_c_a)=250.0 + mw_aer_mac(iopcg1_b_c_a)=250.0 + mw_aer_mac(iopcg2_b_c_a)=250.0 + mw_aer_mac(iopcg3_b_c_a)=250.0 + mw_aer_mac(iopcg4_b_c_a)=250.0 + mw_aer_mac(iopcg5_b_c_a)=250.0 + mw_aer_mac(iopcg6_b_c_a)=250.0 + mw_aer_mac(iopcg7_b_c_a)=250.0 + mw_aer_mac(iopcg8_b_c_a)=250.0 + mw_aer_mac(ipcg1_b_o_a)=250.0 + mw_aer_mac(ipcg2_b_o_a)=250.0 + mw_aer_mac(ipcg3_b_o_a)=250.0 + mw_aer_mac(ipcg4_b_o_a)=250.0 + mw_aer_mac(ipcg5_b_o_a)=250.0 + mw_aer_mac(ipcg6_b_o_a)=250.0 + mw_aer_mac(ipcg7_b_o_a)=250.0 + mw_aer_mac(ipcg8_b_o_a)=250.0 + mw_aer_mac(ipcg9_b_o_a)=250.0 + mw_aer_mac(iopcg1_b_o_a)=250.0 + mw_aer_mac(iopcg2_b_o_a)=250.0 + mw_aer_mac(iopcg3_b_o_a)=250.0 + mw_aer_mac(iopcg4_b_o_a)=250.0 + mw_aer_mac(iopcg5_b_o_a)=250.0 + mw_aer_mac(iopcg6_b_o_a)=250.0 + mw_aer_mac(iopcg7_b_o_a)=250.0 + mw_aer_mac(iopcg8_b_o_a)=250.0 + mw_aer_mac(ipcg1_f_c_a) =250.0 + mw_aer_mac(ipcg2_f_c_a) =250.0 + mw_aer_mac(ipcg3_f_c_a)=250.0 + mw_aer_mac(ipcg4_f_c_a)=250.0 + mw_aer_mac(ipcg5_f_c_a)=250.0 + mw_aer_mac(ipcg6_f_c_a)=250.0 + mw_aer_mac(ipcg7_f_c_a)=250.0 + mw_aer_mac(ipcg8_f_c_a)=250.0 + mw_aer_mac(ipcg9_f_c_a)=250.0 + mw_aer_mac(iopcg1_f_c_a)=250.0 + mw_aer_mac(iopcg2_f_c_a)=250.0 + mw_aer_mac(iopcg3_f_c_a)=250.0 + mw_aer_mac(iopcg4_f_c_a)=250.0 + mw_aer_mac(iopcg5_f_c_a)=250.0 + mw_aer_mac(iopcg6_f_c_a)=250.0 + mw_aer_mac(iopcg7_f_c_a)=250.0 + mw_aer_mac(iopcg8_f_c_a)=250.0 + mw_aer_mac(ipcg1_f_o_a)=250.0 + mw_aer_mac(ipcg2_f_o_a)=250.0 + mw_aer_mac(ipcg3_f_o_a)=250.0 + mw_aer_mac(ipcg4_f_o_a)=250.0 + mw_aer_mac(ipcg5_f_o_a)=250.0 + mw_aer_mac(ipcg6_f_o_a)=250.0 + mw_aer_mac(ipcg7_f_o_a)=250.0 + mw_aer_mac(ipcg8_f_o_a)=250.0 + mw_aer_mac(ipcg9_f_o_a)=250.0 + mw_aer_mac(iopcg1_f_o_a)=250.0 + mw_aer_mac(iopcg2_f_o_a)=250.0 + mw_aer_mac(iopcg3_f_o_a)=250.0 + mw_aer_mac(iopcg4_f_o_a)=250.0 + mw_aer_mac(iopcg5_f_o_a)=250.0 + mw_aer_mac(iopcg6_f_o_a)=250.0 + mw_aer_mac(iopcg7_f_o_a)=250.0 + mw_aer_mac(iopcg8_f_o_a)=250.0 + mw_aer_mac(iant1_c_a) = 250.0 + mw_aer_mac(iant2_c_a) = 250.0 + mw_aer_mac(iant3_c_a) = 250.0 + mw_aer_mac(iant4_c_a) = 250.0 + mw_aer_mac(iant1_o_a) = 250.0 + mw_aer_mac(iant2_o_a) = 250.0 + mw_aer_mac(iant3_o_a) = 250.0 + mw_aer_mac(iant4_o_a) = 250.0 + mw_aer_mac(ibiog1_c_a) = 250.0 + mw_aer_mac(ibiog2_c_a) = 250.0 + mw_aer_mac(ibiog3_c_a) = 250.0 + mw_aer_mac(ibiog4_c_a) = 250.0 + mw_aer_mac(ibiog1_o_a) = 250.0 + mw_aer_mac(ibiog2_o_a) = 250.0 + mw_aer_mac(ibiog3_o_a) = 250.0 + mw_aer_mac(ibiog4_o_a) = 250.0 + ! molecular weights of compounds mw_comp_a(jnh4so4) = 132.0 @@ -9363,18 +12054,94 @@ subroutine load_mosaic_parameters mw_comp_a(jhno3) = 63.0 mw_comp_a(jhcl) = 36.5 mw_comp_a(jmsa) = 96.0 - mw_comp_a(joc) = 1.0 + mw_comp_a(joc) = 250.0 mw_comp_a(jbc) = 1.0 mw_comp_a(join) = 1.0 - mw_comp_a(jaro1) = 150.0 - mw_comp_a(jaro2) = 150.0 - mw_comp_a(jalk1) = 140.0 - mw_comp_a(jole1) = 140.0 - mw_comp_a(japi1) = 184.0 - mw_comp_a(japi2) = 184.0 - mw_comp_a(jlim1) = 200.0 - mw_comp_a(jlim2) = 200.0 mw_comp_a(jh2o) = 18.0 + mw_comp_a(jpcg1_b_c) =250.0 + mw_comp_a(jpcg2_b_c) =250.0 + mw_comp_a(jpcg3_b_c)=250.0 + mw_comp_a(jpcg4_b_c)=250.0 + mw_comp_a(jpcg5_b_c)=250.0 + mw_comp_a(jpcg6_b_c)=250.0 + mw_comp_a(jpcg7_b_c)=250.0 + mw_comp_a(jpcg8_b_c)=250.0 + mw_comp_a(jpcg9_b_c)=250.0 + mw_comp_a(jopcg1_b_c)=250.0 + mw_comp_a(jopcg2_b_c)=250.0 + mw_comp_a(jopcg3_b_c)=250.0 + mw_comp_a(jopcg4_b_c)=250.0 + mw_comp_a(jopcg5_b_c)=250.0 + mw_comp_a(jopcg6_b_c)=250.0 + mw_comp_a(jopcg7_b_c)=250.0 + mw_comp_a(jopcg8_b_c)=250.0 + mw_comp_a(jpcg1_b_o)=250.0 + mw_comp_a(jpcg2_b_o)=250.0 + mw_comp_a(jpcg3_b_o)=250.0 + mw_comp_a(jpcg4_b_o)=250.0 + mw_comp_a(jpcg5_b_o)=250.0 + mw_comp_a(jpcg6_b_o)=250.0 + mw_comp_a(jpcg7_b_o)=250.0 + mw_comp_a(jpcg8_b_o)=250.0 + mw_comp_a(jpcg9_b_o)=250.0 + mw_comp_a(jopcg1_b_o)=250.0 + mw_comp_a(jopcg2_b_o)=250.0 + mw_comp_a(jopcg3_b_o)=250.0 + mw_comp_a(jopcg4_b_o)=250.0 + mw_comp_a(jopcg5_b_o)=250.0 + mw_comp_a(jopcg6_b_o)=250.0 + mw_comp_a(jopcg7_b_o)=250.0 + mw_comp_a(jopcg8_b_o)=250.0 + mw_comp_a(jpcg1_f_c) =250.0 + mw_comp_a(jpcg2_f_c) =250.0 + mw_comp_a(jpcg3_f_c)=250.0 + mw_comp_a(jpcg4_f_c)=250.0 + mw_comp_a(jpcg5_f_c)=250.0 + mw_comp_a(jpcg6_f_c)=250.0 + mw_comp_a(jpcg7_f_c)=250.0 + mw_comp_a(jpcg8_f_c)=250.0 + mw_comp_a(jpcg9_f_c)=250.0 + mw_comp_a(jopcg1_f_c)=250.0 + mw_comp_a(jopcg2_f_c)=250.0 + mw_comp_a(jopcg3_f_c)=250.0 + mw_comp_a(jopcg4_f_c)=250.0 + mw_comp_a(jopcg5_f_c)=250.0 + mw_comp_a(jopcg6_f_c)=250.0 + mw_comp_a(jopcg7_f_c)=250.0 + mw_comp_a(jopcg8_f_c)=250.0 + mw_comp_a(jpcg1_f_o)=250.0 + mw_comp_a(jpcg2_f_o)=250.0 + mw_comp_a(jpcg3_f_o)=250.0 + mw_comp_a(jpcg4_f_o)=250.0 + mw_comp_a(jpcg5_f_o)=250.0 + mw_comp_a(jpcg6_f_o)=250.0 + mw_comp_a(jpcg7_f_o)=250.0 + mw_comp_a(jpcg8_f_o)=250.0 + mw_comp_a(jpcg9_f_o)=250.0 + mw_comp_a(jopcg1_f_o)=250.0 + mw_comp_a(jopcg2_f_o)=250.0 + mw_comp_a(jopcg3_f_o)=250.0 + mw_comp_a(jopcg4_f_o)=250.0 + mw_comp_a(jopcg5_f_o)=250.0 + mw_comp_a(jopcg6_f_o)=250.0 + mw_comp_a(jopcg7_f_o)=250.0 + mw_comp_a(jopcg8_f_o)=250.0 + mw_comp_a(jant1_c)=250.0 + mw_comp_a(jant2_c)=250.0 + mw_comp_a(jant3_c)=250.0 + mw_comp_a(jant4_c)=250.0 + mw_comp_a(jant1_o)=250.0 + mw_comp_a(jant2_o)=250.0 + mw_comp_a(jant3_o)=250.0 + mw_comp_a(jant4_o)=250.0 + mw_comp_a(jbiog1_c)=250.0 + mw_comp_a(jbiog2_c)=250.0 + mw_comp_a(jbiog3_c)=250.0 + mw_comp_a(jbiog4_c)=250.0 + mw_comp_a(jbiog1_o)=250.0 + mw_comp_a(jbiog2_o)=250.0 + mw_comp_a(jbiog3_o)=250.0 + mw_comp_a(jbiog4_o)=250.0 ! densities of generic aerosol species dens_aer_mac(iso4_a) = 1.8 ! used @@ -9388,15 +12155,90 @@ subroutine load_mosaic_parameters dens_aer_mac(ioin_a) = 2.6 ! used dens_aer_mac(ioc_a) = 1.0 ! used dens_aer_mac(ibc_a) = 1.7 ! used - dens_aer_mac(iaro1_a)= 1.0 - dens_aer_mac(iaro2_a)= 1.0 - dens_aer_mac(ialk1_a)= 1.0 - dens_aer_mac(iole1_a)= 1.0 - dens_aer_mac(iapi1_a)= 1.0 - dens_aer_mac(iapi2_a)= 1.0 - dens_aer_mac(ilim1_a)= 1.0 - dens_aer_mac(ilim2_a)= 1.0 - + dens_aer_mac(ipcg1_b_c_a) =1.0 + dens_aer_mac(ipcg2_b_c_a) =1.0 + dens_aer_mac(ipcg3_b_c_a)=1.0 + dens_aer_mac(ipcg4_b_c_a)=1.0 + dens_aer_mac(ipcg5_b_c_a)=1.0 + dens_aer_mac(ipcg6_b_c_a)=1.0 + dens_aer_mac(ipcg7_b_c_a)=1.0 + dens_aer_mac(ipcg8_b_c_a)=1.0 + dens_aer_mac(ipcg9_b_c_a)=1.0 + dens_aer_mac(iopcg1_b_c_a)=1.0 + dens_aer_mac(iopcg2_b_c_a)=1.0 + dens_aer_mac(iopcg3_b_c_a)=1.0 + dens_aer_mac(iopcg4_b_c_a)=1.0 + dens_aer_mac(iopcg5_b_c_a)=1.0 + dens_aer_mac(iopcg6_b_c_a)=1.0 + dens_aer_mac(iopcg7_b_c_a)=1.0 + dens_aer_mac(iopcg8_b_c_a)=1.0 + dens_aer_mac(ipcg1_b_o_a)=1.0 + dens_aer_mac(ipcg2_b_o_a)=1.0 + dens_aer_mac(ipcg3_b_o_a)=1.0 + dens_aer_mac(ipcg4_b_o_a)=1.0 + dens_aer_mac(ipcg5_b_o_a)=1.0 + dens_aer_mac(ipcg6_b_o_a)=1.0 + dens_aer_mac(ipcg7_b_o_a)=1.0 + dens_aer_mac(ipcg8_b_o_a)=1.0 + dens_aer_mac(ipcg9_b_o_a)=1.0 + dens_aer_mac(iopcg1_b_o_a)=1.0 + dens_aer_mac(iopcg2_b_o_a)=1.0 + dens_aer_mac(iopcg3_b_o_a)=1.0 + dens_aer_mac(iopcg4_b_o_a)=1.0 + dens_aer_mac(iopcg5_b_o_a)=1.0 + dens_aer_mac(iopcg6_b_o_a)=1.0 + dens_aer_mac(iopcg7_b_o_a)=1.0 + dens_aer_mac(iopcg8_b_o_a)=1.0 + dens_aer_mac(ipcg1_f_c_a) =1.0 + dens_aer_mac(ipcg2_f_c_a) =1.0 + dens_aer_mac(ipcg3_f_c_a)=1.0 + dens_aer_mac(ipcg4_f_c_a)=1.0 + dens_aer_mac(ipcg5_f_c_a)=1.0 + dens_aer_mac(ipcg6_f_c_a)=1.0 + dens_aer_mac(ipcg7_f_c_a)=1.0 + dens_aer_mac(ipcg8_f_c_a)=1.0 + dens_aer_mac(ipcg9_f_c_a)=1.0 + dens_aer_mac(iopcg1_f_c_a)=1.0 + dens_aer_mac(iopcg2_f_c_a)=1.0 + dens_aer_mac(iopcg3_f_c_a)=1.0 + dens_aer_mac(iopcg4_f_c_a)=1.0 + dens_aer_mac(iopcg5_f_c_a)=1.0 + dens_aer_mac(iopcg6_f_c_a)=1.0 + dens_aer_mac(iopcg7_f_c_a)=1.0 + dens_aer_mac(iopcg8_f_c_a)=1.0 + dens_aer_mac(ipcg1_f_o_a)=1.0 + dens_aer_mac(ipcg2_f_o_a)=1.0 + dens_aer_mac(ipcg3_f_o_a)=1.0 + dens_aer_mac(ipcg4_f_o_a)=1.0 + dens_aer_mac(ipcg5_f_o_a)=1.0 + dens_aer_mac(ipcg6_f_o_a)=1.0 + dens_aer_mac(ipcg7_f_o_a)=1.0 + dens_aer_mac(ipcg8_f_o_a)=1.0 + dens_aer_mac(ipcg9_f_o_a)=1.0 + dens_aer_mac(iopcg1_f_o_a)=1.0 + dens_aer_mac(iopcg2_f_o_a)=1.0 + dens_aer_mac(iopcg3_f_o_a)=1.0 + dens_aer_mac(iopcg4_f_o_a)=1.0 + dens_aer_mac(iopcg5_f_o_a)=1.0 + dens_aer_mac(iopcg6_f_o_a)=1.0 + dens_aer_mac(iopcg7_f_o_a)=1.0 + dens_aer_mac(iopcg8_f_o_a)=1.0 + dens_aer_mac(iant1_c_a)=1.0 + dens_aer_mac(iant2_c_a)=1.0 + dens_aer_mac(iant3_c_a)=1.0 + dens_aer_mac(iant4_c_a)=1.0 + dens_aer_mac(iant1_o_a)=1.0 + dens_aer_mac(iant2_o_a)=1.0 + dens_aer_mac(iant3_o_a)=1.0 + dens_aer_mac(iant4_o_a)=1.0 + dens_aer_mac(ibiog1_c_a)=1.0 + dens_aer_mac(ibiog2_c_a)=1.0 + dens_aer_mac(ibiog3_c_a)=1.0 + dens_aer_mac(ibiog4_c_a)=1.0 + dens_aer_mac(ibiog1_o_a)=1.0 + dens_aer_mac(ibiog2_o_a)=1.0 + dens_aer_mac(ibiog3_o_a)=1.0 + dens_aer_mac(ibiog4_o_a)=1.0 ! partial molar volumes of condensing species partial_molar_vol(ih2so4_g) = 51.83 @@ -9404,15 +12246,90 @@ subroutine load_mosaic_parameters partial_molar_vol(ihcl_g) = 20.96 partial_molar_vol(inh3_g) = 24.03 partial_molar_vol(imsa_g) = 53.33 - partial_molar_vol(iaro1_g) = 150.0 - partial_molar_vol(iaro2_g) = 150.0 - partial_molar_vol(ialk1_g) = 140.0 - partial_molar_vol(iole1_g) = 140.0 - partial_molar_vol(iapi1_g) = 184.0 - partial_molar_vol(iapi2_g) = 184.0 - partial_molar_vol(ilim1_g) = 200.0 - partial_molar_vol(ilim2_g) = 200.0 - + partial_molar_vol(ipcg1_b_c_g) =250.0 + partial_molar_vol(ipcg2_b_c_g) =250.0 + partial_molar_vol(ipcg3_b_c_g)=250.0 + partial_molar_vol(ipcg4_b_c_g)=250.0 + partial_molar_vol(ipcg5_b_c_g)=250.0 + partial_molar_vol(ipcg6_b_c_g)=250.0 + partial_molar_vol(ipcg7_b_c_g)=250.0 + partial_molar_vol(ipcg8_b_c_g)=250.0 + partial_molar_vol(ipcg9_b_c_g)=250.0 + partial_molar_vol(iopcg1_b_c_g)=250.0 + partial_molar_vol(iopcg2_b_c_g)=250.0 + partial_molar_vol(iopcg3_b_c_g)=250.0 + partial_molar_vol(iopcg4_b_c_g)=250.0 + partial_molar_vol(iopcg5_b_c_g)=250.0 + partial_molar_vol(iopcg6_b_c_g)=250.0 + partial_molar_vol(iopcg7_b_c_g)=250.0 + partial_molar_vol(iopcg8_b_c_g)=250.0 + partial_molar_vol(ipcg1_b_o_g)=250.0 + partial_molar_vol(ipcg2_b_o_g)=250.0 + partial_molar_vol(ipcg3_b_o_g)=250.0 + partial_molar_vol(ipcg4_b_o_g)=250.0 + partial_molar_vol(ipcg5_b_o_g)=250.0 + partial_molar_vol(ipcg6_b_o_g)=250.0 + partial_molar_vol(ipcg7_b_o_g)=250.0 + partial_molar_vol(ipcg8_b_o_g)=250.0 + partial_molar_vol(ipcg9_b_o_g)=250.0 + partial_molar_vol(iopcg1_b_o_g)=250.0 + partial_molar_vol(iopcg2_b_o_g)=250.0 + partial_molar_vol(iopcg3_b_o_g)=250.0 + partial_molar_vol(iopcg4_b_o_g)=250.0 + partial_molar_vol(iopcg5_b_o_g)=250.0 + partial_molar_vol(iopcg6_b_o_g)=250.0 + partial_molar_vol(iopcg7_b_o_g)=250.0 + partial_molar_vol(iopcg8_b_o_g)=250.0 + partial_molar_vol(ipcg1_f_c_g) =250.0 + partial_molar_vol(ipcg2_f_c_g) =250.0 + partial_molar_vol(ipcg3_f_c_g)=250.0 + partial_molar_vol(ipcg4_f_c_g)=250.0 + partial_molar_vol(ipcg5_f_c_g)=250.0 + partial_molar_vol(ipcg6_f_c_g)=250.0 + partial_molar_vol(ipcg7_f_c_g)=250.0 + partial_molar_vol(ipcg8_f_c_g)=250.0 + partial_molar_vol(ipcg9_f_c_g)=250.0 + partial_molar_vol(iopcg1_f_c_g)=250.0 + partial_molar_vol(iopcg2_f_c_g)=250.0 + partial_molar_vol(iopcg3_f_c_g)=250.0 + partial_molar_vol(iopcg4_f_c_g)=250.0 + partial_molar_vol(iopcg5_f_c_g)=250.0 + partial_molar_vol(iopcg6_f_c_g)=250.0 + partial_molar_vol(iopcg7_f_c_g)=250.0 + partial_molar_vol(iopcg8_f_c_g)=250.0 + partial_molar_vol(ipcg1_f_o_g)=250.0 + partial_molar_vol(ipcg2_f_o_g)=250.0 + partial_molar_vol(ipcg3_f_o_g)=250.0 + partial_molar_vol(ipcg4_f_o_g)=250.0 + partial_molar_vol(ipcg5_f_o_g)=250.0 + partial_molar_vol(ipcg6_f_o_g)=250.0 + partial_molar_vol(ipcg7_f_o_g)=250.0 + partial_molar_vol(ipcg8_f_o_g)=250.0 + partial_molar_vol(ipcg9_f_o_g)=250.0 + partial_molar_vol(iopcg1_f_o_g)=250.0 + partial_molar_vol(iopcg2_f_o_g)=250.0 + partial_molar_vol(iopcg3_f_o_g)=250.0 + partial_molar_vol(iopcg4_f_o_g)=250.0 + partial_molar_vol(iopcg5_f_o_g)=250.0 + partial_molar_vol(iopcg6_f_o_g)=250.0 + partial_molar_vol(iopcg7_f_o_g)=250.0 + partial_molar_vol(iopcg8_f_o_g)=250.0 + partial_molar_vol(iant1_c_g)=250.0 + partial_molar_vol(iant2_c_g)=250.0 + partial_molar_vol(iant3_c_g)=250.0 + partial_molar_vol(iant4_c_g)=250.0 + partial_molar_vol(iant1_o_g)=250.0 + partial_molar_vol(iant2_o_g)=250.0 + partial_molar_vol(iant3_o_g)=250.0 + partial_molar_vol(iant4_o_g)=250.0 + partial_molar_vol(ibiog1_c_g)=250.0 + partial_molar_vol(ibiog2_c_g)=250.0 + partial_molar_vol(ibiog3_c_g)=250.0 + partial_molar_vol(ibiog4_c_g)=250.0 + partial_molar_vol(ibiog1_o_g)=250.0 + partial_molar_vol(ibiog2_o_g)=250.0 + partial_molar_vol(ibiog3_o_g)=250.0 + partial_molar_vol(ibiog4_o_g)=250.0 ! refractive index ref_index_a(jnh4so4) = cmplx(1.52,0.) @@ -9440,14 +12357,6 @@ subroutine load_mosaic_parameters ref_index_a(joc) = cmplx(1.45,0.) ref_index_a(jbc) = cmplx(1.82,0.74) ref_index_a(join) = cmplx(1.55,0.006) - ref_index_a(jaro1) = cmplx(1.45,0.) - ref_index_a(jaro2) = cmplx(1.45,0.) - ref_index_a(jalk1) = cmplx(1.45,0.) - ref_index_a(jole1) = cmplx(1.45,0.) - ref_index_a(japi1) = cmplx(1.45,0.) - ref_index_a(japi2) = cmplx(1.45,0.) - ref_index_a(jlim1) = cmplx(1.45,0.) - ref_index_a(jlim2) = cmplx(1.45,0.) ref_index_a(jh2o) = cmplx(1.33,0.) ! jsalt_index @@ -11900,11 +14809,11 @@ end subroutine load_mosaic_parameters ! author: rahul a. zaveri ! update: jan 2005 !----------------------------------------------------------------------- - subroutine update_thermodynamic_constants + subroutine update_thermodynamic_constants(vbs_nbin) ! implicit none ! include 'mosaic.h' ! local variables - integer iv, j_index, ibin, je + integer iv, j_index, ibin, je,vbs_nbin real(kind=8) :: tr, rt, term real(kind=8) :: gam_nh4no3_0, gam_nh4cl_0, m_nh4no3_0, m_nh4cl_0 ! raz update 6/25/2008 ! function @@ -11953,17 +14862,120 @@ subroutine update_thermodynamic_constants keq_sl(jcano3) = fn_keq(4.31d5, 7.83d0,42.01d0, t_k)*1.e5 ! ca(no3)2(s) = ca++ + 2no3- keq_sl(jcamsa2) = 1.e15 ! CaMSA2(s)= Ca+ + 2MSA- + do iv = ipcg1_b_c_g, ngas_volatile + sat_soa(iv) = 0.0 ! [nmol/m^3(air)] + enddo + + if (vbs_nbin.eq.9) then ! vapor pressures of soa species - po_soa(iaro1_g) = fn_po(5.7d-5, 156.0d0, t_k) ! [pascal] - po_soa(iaro2_g) = fn_po(1.6d-3, 156.0d0, t_k) ! [pascal] - po_soa(ialk1_g) = fn_po(5.0d-6, 156.0d0, t_k) ! [pascal] - po_soa(iole1_g) = fn_po(5.0d-6, 156.0d0, t_k) ! [pascal] - po_soa(iapi1_g) = fn_po(4.0d-6, 156.0d0, t_k) ! [pascal] - po_soa(iapi2_g) = fn_po(1.7d-4, 156.0d0, t_k) ! [pascal] - po_soa(ilim1_g) = fn_po(2.5d-5, 156.0d0, t_k) ! [pascal] - po_soa(ilim2_g) = fn_po(1.2d-4, 156.0d0, t_k) ! [pascal] - - do iv = iaro1_g, ngas_volatile + po_soa(ipcg1_b_c_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(ipcg2_b_c_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(ipcg3_b_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ipcg4_b_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ipcg5_b_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ipcg6_b_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ipcg7_b_c_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(ipcg8_b_c_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg9_b_c_g) = fn_po(9.91d0, 64.0d0, T_K) ! [Pascal] + po_soa(iopcg1_b_c_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(iopcg2_b_c_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(iopcg3_b_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iopcg4_b_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iopcg5_b_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iopcg6_b_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(iopcg7_b_c_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(iopcg8_b_c_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg1_b_o_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(ipcg2_b_o_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(ipcg3_b_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ipcg4_b_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ipcg5_b_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ipcg6_b_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ipcg7_b_o_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(ipcg8_b_o_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg9_b_o_g) = fn_po(9.91d0, 64.0d0, T_K) ! [Pascal] + po_soa(iopcg1_b_o_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(iopcg2_b_o_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(iopcg3_b_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iopcg4_b_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iopcg5_b_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iopcg6_b_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(iopcg7_b_o_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(iopcg8_b_o_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg1_f_c_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(ipcg2_f_c_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(ipcg3_f_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ipcg4_f_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ipcg5_f_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ipcg6_f_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ipcg7_f_c_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(ipcg8_f_c_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg9_f_c_g) = fn_po(9.91d0, 64.0d0, T_K) ! [Pascal] + po_soa(iopcg1_f_c_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(iopcg2_f_c_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(iopcg3_f_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iopcg4_f_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iopcg5_f_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iopcg6_f_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(iopcg7_f_c_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(iopcg8_f_c_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg1_f_o_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(ipcg2_f_o_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(ipcg3_f_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ipcg4_f_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ipcg5_f_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ipcg6_f_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ipcg7_f_o_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(ipcg8_f_o_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + po_soa(ipcg9_f_o_g) = fn_po(9.91d0, 64.0d0, T_K) ! [Pascal] + po_soa(iopcg1_f_o_g) = fn_po(9.91d-8, 112.0d0, T_K) ! [Pascal] + po_soa(iopcg2_f_o_g) = fn_po(9.91d-7, 106.0d0, T_K) ! [Pascal] + po_soa(iopcg3_f_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iopcg4_f_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iopcg5_f_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iopcg6_f_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(iopcg7_f_o_g) = fn_po(9.91d-2, 76.0d0, T_K) ! [Pascal] + po_soa(iopcg8_f_o_g) = fn_po(9.91d-1, 70.0d0, T_K) ! [Pascal] + + po_soa(iant1_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iant2_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iant3_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iant4_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(iant1_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(iant2_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(iant3_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(iant4_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ibiog1_c_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ibiog2_c_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ibiog3_c_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ibiog4_c_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + po_soa(ibiog1_o_g) = fn_po(9.91d-6, 100.0d0, T_K) ! [Pascal] + po_soa(ibiog2_o_g) = fn_po(9.91d-5, 94.0d0, T_K) ! [Pascal] + po_soa(ibiog3_o_g) = fn_po(9.91d-4, 88.0d0, T_K) ! [Pascal] + po_soa(ibiog4_o_g) = fn_po(9.91d-3, 82.0d0, T_K) ! [Pascal] + + + elseif (vbs_nbin.eq.2) then + po_soa(ipcg1_b_c_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg2_b_c_g) = fn_po(9.91d-1, 83.0d0, T_K) ! [Pascal] + po_soa(iopcg1_b_c_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg1_b_o_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg2_b_o_g) = fn_po(9.91d-1, 83.0d0, T_K) ! [Pascal] + po_soa(iopcg1_b_o_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg1_f_c_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg2_f_c_g) = fn_po(9.91d-1, 83.0d0, T_K) ! [Pascal] + po_soa(iopcg1_f_c_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg1_f_o_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(ipcg2_f_o_g) = fn_po(9.91d-1, 83.0d0, T_K) ! [Pascal] + po_soa(iopcg1_f_o_g) = fn_po(9.91d-8, 83.0d0, T_K) ! [Pascal] + po_soa(iant1_c_g) = fn_po(9.91d-6, 83.0d0, T_K) ! [Pascal] + po_soa(iant1_o_g) = fn_po(9.91d-6, 83.0d0, T_K) ! [Pascal] + po_soa(ibiog1_c_g) = fn_po(9.91d-6, 83.0d0, T_K) ! [Pascal] + po_soa(ibiog1_o_g) = fn_po(9.91d-6, 83.0d0, T_K) ! [Pascal] + + endif + + do iv = ipcg1_b_c_g, ngas_volatile sat_soa(iv) = 1.e9*po_soa(iv)/(8.314*t_k) ! [nmol/m^3(air)] enddo diff --git a/chem/module_mosaic_wetscav.F b/chem/module_mosaic_wetscav.F index a4ea8ad61c..a91c06519e 100644 --- a/chem/module_mosaic_wetscav.F +++ b/chem/module_mosaic_wetscav.F @@ -1166,7 +1166,7 @@ subroutine gasrainscav (ims,ime,kms,kme,jms,jme,its,ite,kts,kte,jts,jte,num_chem USE module_model_constants, only: g,rhowater, mwdry use module_configure, only: grid_config_rec_type, & param_first_scalar, & - p_so2, p_h2o2, p_sulf, p_msa, & + p_so2, p_h2o2, p_sulf,p_h2so4, p_msa, & p_hno3, p_hcl, p_nh3 implicit none @@ -1251,7 +1251,8 @@ subroutine gasrainscav (ims,ime,kms,kme,jms,jme,its,ite,kts,kte,jts,jte,num_chem lg_ptr(ig_so2 ) = p_so2 lg_ptr(ig_h2o2 ) = p_h2o2 - lg_ptr(ig_h2so4) = p_sulf + lg_ptr(ig_h2so4) = p_sulf + lg_ptr(ig_h2so4) = p_h2so4 lg_ptr(ig_msa ) = p_msa lg_ptr(ig_hno3 ) = p_hno3 lg_ptr(ig_hcl ) = p_hcl diff --git a/chem/module_optical_averaging.F b/chem/module_optical_averaging.F index 49cd3e3545..63416f397d 100644 --- a/chem/module_optical_averaging.F +++ b/chem/module_optical_averaging.F @@ -42,10 +42,11 @@ ! of ozone, particulates, and aerosol direct radiative forcing in the ! vicinity of Houston using a fully-coupled meteorology-chemistry- ! aerosol model. JGR, 111, doi:10.1029/2005JD006721. -! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, et al. -! (2009), Closure on the single scattering albedo in the WRF-Chem -! framework using data from the MILAGRO campaign, Atmos. Chem. Phys., -! submitted. +! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, and +! A. Laskin (2010), Technical note: evaluation of the WRF-Chem +! "aerosol chemical to aerosol optical properties" module using data +! from the MILAGRO campaign, Atmos. Chem. Phys., 10, 7325-7340, +! doi:10.5194/acp-10-7325-2010. ! ! Contact Jerome Fast for updates on the status of manuscripts under ! review. @@ -61,6 +62,7 @@ !************************************************************************ module module_optical_averaging + USE module_data_rrtmgaeropt implicit none integer, parameter, private :: lunerr = -1 @@ -103,11 +105,14 @@ module module_optical_averaging subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & nbin_o,haveaer,option_method,option_mie,chem,dz8w,alt, & relhum,h2oai,h2oaj, & - tauaer1,tauaer2,tauaer3,tauaer4, & - gaer1,gaer2,gaer3,gaer4, & - waer1,waer2,waer3,waer4, & - bscoef1,bscoef2,bscoef3,bscoef4, & +! tauaer1,tauaer2,tauaer3,tauaer4, & +! gaer1,gaer2,gaer3,gaer4, & +! waer1,waer2,waer3,waer4, & +! bscoef1,bscoef2,bscoef3,bscoef4, & + tauaersw,extaersw,gaersw,waersw,bscoefsw, & l2aer,l3aer,l4aer,l5aer,l6aer,l7aer, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + tauaerlw,extaerlw, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -116,6 +121,8 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & USE module_state_description USE module_model_constants ! USE module_data_mosaic_therm, only: nbin_a, nbin_a_maxd + USE module_peg_util, only: peg_error_fatal, peg_message + IMPLICIT NONE ! INTEGER, INTENT(IN ) :: id, & ids,ide, jds,jde, kds,kde, & @@ -131,19 +138,30 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & INTENT(IN ) :: chem ! REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & - INTENT(IN ) :: relhum,dz8w, alt, h2oai, h2oaj + INTENT(IN ) :: relhum,dz8w, alt, h2oai, h2oaj, & + totoa_a01, totoa_a02, totoa_a03, totoa_a04 + + integer nspint + parameter ( nspint = 4 ) ! number of spectral interval shortwave bands ! ! arrays that hold the aerosol optical properties ! - REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & +! REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & +! INTENT(INOUT ) :: & +! tauaer1, tauaer2, tauaer3, tauaer4, & +! gaer1, gaer2, gaer3, gaer4, & +! waer1, waer2, waer3, waer4, & +! bscoef1, bscoef2, bscoef3, bscoef4 + REAL, DIMENSION( ims:ime, kms:kme, jms:jme,1:nspint ), & INTENT(INOUT ) :: & - tauaer1, tauaer2, tauaer3, tauaer4, & - gaer1, gaer2, gaer3, gaer4, & - waer1, waer2, waer3, waer4, & - bscoef1, bscoef2, bscoef3, bscoef4 - REAL, DIMENSION( ims:ime, kms:kme, jms:jme, 1:4 ), & + tauaersw,extaersw,gaersw,waersw,bscoefsw +! REAL, DIMENSION( ims:ime, kms:kme, jms:jme, 1:4 ), & + REAL, DIMENSION( ims:ime, kms:kme, jms:jme, 1:nspint ), & INTENT(INOUT ) :: & l2aer, l3aer, l4aer, l5aer, l6aer, l7aer + REAL, DIMENSION( ims:ime, kms:kme, jms:jme,1:nlwbands), & + INTENT(INOUT ) :: & + tauaerlw,extaerlw ! TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags LOGICAL, INTENT(IN) :: haveaer @@ -154,54 +172,100 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & radius_wet, number_bin, radius_core real, dimension( 1:nbin_o, kts:kte) :: & radius_wet_col, number_bin_col, radius_core_col - complex, dimension( its:ite, kts:kte, jts:jte, 1:nbin_o ) :: & - refindx, refindx_core, refindx_shell + complex, dimension( its:ite, kts:kte, jts:jte, 1:nbin_o ) :: & !for gocart + refindx0, refindx_core0, refindx_shell0 +! complex, dimension( 1:nbin_o, kts:kte) :: & +! refindx_col, refindx_core_col, refindx_shell_col + + complex, dimension( its:ite, kts:kte, jts:jte, 1:nbin_o,1:nspint) :: & + swrefindx, swrefindx_core, swrefindx_shell + complex, dimension( 1:nbin_o, kts:kte,1:nspint) :: & + swrefindx_col, swrefindx_core_col, swrefindx_shell_col complex, dimension( 1:nbin_o, kts:kte) :: & - refindx_col, refindx_core_col, refindx_shell_col + swrefindx_col1, swrefindx_core_col1, swrefindx_shell_col1 + complex, dimension( its:ite, kts:kte, jts:jte, 1:nbin_o,1:nlwbands) :: & + lwrefindx, lwrefindx_core, lwrefindx_shell + complex, dimension( 1:nbin_o, kts:kte,1:nlwbands) :: & + lwrefindx_col, lwrefindx_core_col, lwrefindx_shell_col + real, dimension( kts:kte ) :: dz ! - integer nspint +! integer nspint integer iclm, jclm, k, isize integer option_method, option_mie - parameter ( nspint = 4 ) ! number of spectral interval bands +! parameter ( nspint = 4 ) ! number of spectral interval bands real, dimension( nspint, kts:kte ) :: & - sizeaer,extaer,waer,gaer,tauaer,bscoef +! sizeaer,extaer,waer,gaer,tauaer,bscoef + swsizeaer,swextaer,swwaer,swgaer,swtauaer,swbscoef real, dimension( nspint, kts:kte ) :: & l2, l3, l4, l5, l6, l7 + real, dimension( nlwbands, kts:kte ) :: & + lwtauaer,lwextaer real refr + integer ns real fv complex aa, bb + character*150 msg ! save :: sizeaer,extaer,waer,gaer,tauaer,bscoef ! save :: l2,l3,l4,l5,l6,l7 !---------------------------------------------------------------------------------- ! +! write( msg, '(a, 6i4)' ) & +! 'jdf ', ids, ide, jds, jde, kds, kde +! call peg_message( lunerr, msg ) +! write( msg, '(a, 6i4)' ) & +! 'jdf ', ims, ime, jms, jme, kms, kme +! call peg_message( lunerr, msg ) +! write( msg, '(a, 6i4)' ) & +! 'jdf ', its, ite, jts, jte, kts, kte +! call peg_message( lunerr, msg ) chem_select: SELECT CASE(config_flags%chem_opt) ! CASE (RADM2SORG, RADM2SORG_AQ, RADM2SORG_KPP, & - RACM_ESRLSORG_KPP, RACMSORG_AQ, RACMSORG_KPP) + RACM_ESRLSORG_KPP, RACMSORG_AQ, RACMSORG_KPP, CBMZSORG, CBMZSORG_AQ) call optical_prep_modal(nbin_o, chem, alt, & - h2oai, h2oaj, refindx, radius_wet, number_bin, & - radius_core, refindx_core, refindx_shell, & +! h2oai, h2oaj, refindx, radius_wet, number_bin, & +! radius_core, refindx_core, refindx_shell, & + h2oai, h2oaj, radius_core,radius_wet, number_bin, & + swrefindx,swrefindx_core, swrefindx_shell, & + lwrefindx,lwrefindx_core, lwrefindx_shell, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) ! call mieaer_modal() ! - CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ) + CASE (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN , CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, & + SAPRC99_MOSAIC_4BIN_VBS2_KPP) call optical_prep_sectional(nbin_o, chem, alt, & - refindx, radius_wet, number_bin, & - radius_core, refindx_core, refindx_shell, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & +! refindx, radius_wet, number_bin, & +! radius_core, refindx_core, refindx_shell, & + radius_core, radius_wet, number_bin, & + swrefindx,swrefindx_core,swrefindx_shell, & + lwrefindx,lwrefindx_core,lwrefindx_shell, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) CASE (GOCART_SIMPLE, GOCARTRACM_KPP, GOCARTRADM2_KPP, GOCARTRADM2 ) call optical_prep_gocart(nbin_o, chem, alt,relhum, & - refindx, radius_wet, number_bin, & - radius_core, refindx_core, refindx_shell, & + refindx0, radius_wet, number_bin, & + radius_core, refindx_core0, refindx_shell0, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) + !gocart is not wavelength dependent for now --czhao + !and only for shortwave + do ns=1,nspint + swrefindx(:,:,:,:,ns)=refindx0 + swrefindx_core(:,:,:,:,ns)=refindx_core0 + swrefindx_shell(:,:,:,:,ns)=refindx_shell0 + lwrefindx=0.0 + lwrefindx_core=0.0 + lwrefindx_shell=0.0 + enddo END SELECT chem_select do jclm = jts, jte do iclm = its, ite @@ -212,17 +276,28 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & do isize = 1, nbin_o number_bin_col(isize,k) = number_bin(iclm,k,jclm,isize) radius_wet_col(isize,k) = radius_wet(iclm,k,jclm,isize) - refindx_col(isize,k) = refindx(iclm,k,jclm,isize) - refr=real(refindx_col(isize,k)) +! refindx_col(isize,k) = refindx(iclm,k,jclm,isize) +! refr=real(refindx_col(isize,k)) + swrefindx_col(isize,k,:) = swrefindx(iclm,k,jclm,isize,:) + swrefindx_col1(isize,k) = swrefindx(iclm,k,jclm,isize,3) ! at 600 nm + lwrefindx_col(isize,k,:) = lwrefindx(iclm,k,jclm,isize,:) radius_core_col(isize,k) = radius_core(iclm,k,jclm,isize) - refindx_core_col(isize,k) = refindx_core(iclm,k,jclm,isize) - refindx_shell_col(isize,k) = refindx_shell(iclm,k,jclm,isize) +! refindx_core_col(isize,k) = refindx_core(iclm,k,jclm,isize) +! refindx_shell_col(isize,k) = refindx_shell(iclm,k,jclm,isize) + swrefindx_core_col(isize,k,:) = swrefindx_core(iclm,k,jclm,isize,:) + swrefindx_shell_col(isize,k,:) = swrefindx_shell(iclm,k,jclm,isize,:) + swrefindx_core_col1(isize,k) = swrefindx_core(iclm,k,jclm,isize,3) + swrefindx_shell_col1(isize,k) = swrefindx_shell(iclm,k,jclm,isize,3) + lwrefindx_core_col(isize,k,:) = lwrefindx_core(iclm,k,jclm,isize,:) + lwrefindx_shell_col(isize,k,:) = lwrefindx_shell(iclm,k,jclm,isize,:) ! JCB, Feb. 20, 2008: in the case of shell/core and the use of the Mie ! routine, set the refractive index of the shell used in the printout ! equal to the actual refractive index of the shell if(option_method.eq.3.and.option_mie.eq.2) & - refindx_col(isize,k) = refindx_shell(iclm,k,jclm,isize) ! JCB +! refindx_col(isize,k) = refindx_shell(iclm,k,jclm,isize) ! JCB + swrefindx_col(isize,k,:) = swrefindx_shell(iclm,k,jclm,isize,:) ! JCB + swrefindx_col1(isize,k) = swrefindx_shell(iclm,k,jclm,isize,3) ! JCB ! JCB, Feb. 20, 2008: set core radius = 0 for very small cores; this ! prevents problems with full-blown Mie calculations that do not deal @@ -240,11 +315,20 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & if (option_method .eq. 2) then do k = kts, kte do isize = 1, nbin_o + do ns=1,nspint fv = (radius_core_col(isize,k)/radius_wet_col(isize,k))**3 ! volume fraction - aa=(refindx_core_col(isize,k)**2+2.0*refindx_shell(iclm,k,jclm,isize)**2) - bb=fv*(refindx_core_col(isize,k)**2-refindx_shell(iclm,k,jclm,isize)**2) - refindx_col(isize,k)= refindx_shell(iclm,k,jclm,isize)*sqrt((aa+2.0*bb)/(aa-bb)) - refr=real(refindx_col(isize,k)) +! aa=(refindx_core_col(isize,k)**2+2.0*refindx_shell(iclm,k,jclm,isize)**2) +! bb=fv*(refindx_core_col(isize,k)**2-refindx_shell(iclm,k,jclm,isize)**2) +! refindx_col(isize,k)= refindx_shell(iclm,k,jclm,isize)*sqrt((aa+2.0*bb)/(aa-bb)) +! refr=real(refindx_col(isize,k)) + aa=(swrefindx_core_col(isize,k,ns)**2+2.0*swrefindx_shell(iclm,k,jclm,isize,ns)**2) + bb=fv*(swrefindx_core_col(isize,k,ns)**2-swrefindx_shell(iclm,k,jclm,isize,ns)**2) + swrefindx_col(isize,k,ns)= swrefindx_shell(iclm,k,jclm,isize,ns)*sqrt((aa+2.0*bb)/(aa-bb)) + if (ns==3) then + swrefindx_col1(isize,k)= swrefindx_shell(iclm,k,jclm,isize,ns)*sqrt((aa+2.0*bb)/(aa-bb)) + endif + !refr=real(refindx_col(isize,k)) + enddo enddo enddo endif @@ -253,7 +337,9 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & do k = kts, kte do isize = 1, nbin_o radius_core_col(isize,k) = 0.0 - refindx_core_col(isize,k) = cmplx(0.0,0.0) +! refindx_core_col(isize,k) = cmplx(0.0,0.0) + swrefindx_core_col(isize,k,:) = cmplx(0.0,0.0) + swrefindx_core_col1(isize,k) = cmplx(0.0,0.0) enddo enddo endif @@ -284,72 +370,64 @@ subroutine optical_averaging(id,curr_secs,dtstep,config_flags, & ! if (option_mie .eq. 1) then call mieaer(id, iclm, jclm, nbin_o, & - number_bin_col, radius_wet_col, refindx_col, & - dz, curr_secs, kte, & - sizeaer, extaer, waer, gaer, tauaer, & - l2, l3, l4, l5, l6, l7, bscoef ) +! number_bin_col, radius_wet_col, refindx_col, & + number_bin_col, radius_wet_col,swrefindx_col, & + lwrefindx_col, & + dz, curr_secs, kts, kte, & +! sizeaer, extaer, waer, gaer, tauaer, & + swsizeaer,swextaer,swwaer,swgaer,swtauaer, & + lwextaer,lwtauaer, & + l2, l3, l4, l5, l6, l7,swbscoef ) endif if (option_mie .ge. 2 .and. option_method .le. 2) then call mieaer_sc(id, iclm, jclm, nbin_o, & - number_bin_col, radius_wet_col, refindx_col, & - radius_core_col, refindx_core_col, & +! number_bin_col, radius_wet_col, refindx_col, & +! radius_core_col, refindx_core_col, & + number_bin_col, radius_wet_col, swrefindx_col1, & + radius_core_col, swrefindx_core_col1, & dz, curr_secs, kte, & - sizeaer, extaer, waer, gaer, tauaer, & - l2, l3, l4, l5, l6, l7, bscoef ) +! sizeaer, extaer, waer, gaer, tauaer, & +! l2, l3, l4, l5, l6, l7, bscoef ) + swsizeaer, swextaer, swwaer, swgaer, swtauaer, & + l2, l3, l4, l5, l6, l7, swbscoef ) endif if (option_mie .ge. 2 .and. option_method .eq. 3) then call mieaer_sc(id, iclm, jclm, nbin_o, & - number_bin_col, radius_wet_col, refindx_shell_col, & - radius_core_col, refindx_core_col, & +! number_bin_col, radius_wet_col, refindx_shell_col, & +! radius_core_col, refindx_core_col, & +! dz, curr_secs, kte, & +! sizeaer, extaer, waer, gaer, tauaer, & +! l2, l3, l4, l5, l6, l7, bscoef ) + number_bin_col, radius_wet_col, swrefindx_shell_col1, & + radius_core_col, swrefindx_core_col1, & dz, curr_secs, kte, & - sizeaer, extaer, waer, gaer, tauaer, & - l2, l3, l4, l5, l6, l7, bscoef ) + swsizeaer, swextaer, swwaer, swgaer, swtauaer, & + l2, l3, l4, l5, l6, l7, swbscoef ) endif ! + do k=kts,kte -! if(iclm.eq.45.and.jclm.eq.48)then -! write(0,*)k,relhum(iclm,k,jclm),tauaer(1,k),gaer(1,k) -! endif - tauaer1(iclm,k,jclm) = tauaer(1,k) - tauaer2(iclm,k,jclm) = tauaer(2,k) - tauaer3(iclm,k,jclm) = tauaer(3,k) - tauaer4(iclm,k,jclm) = tauaer(4,k) - gaer1(iclm,k,jclm) = gaer(1,k) - gaer2(iclm,k,jclm) = gaer(2,k) - gaer3(iclm,k,jclm) = gaer(3,k) - gaer4(iclm,k,jclm) = gaer(4,k) - waer1(iclm,k,jclm) = waer(1,k) - waer2(iclm,k,jclm) = waer(2,k) - waer3(iclm,k,jclm) = waer(3,k) - waer4(iclm,k,jclm) = waer(4,k) - bscoef1(iclm,k,jclm) = bscoef(1,k) - bscoef2(iclm,k,jclm) = bscoef(2,k) - bscoef3(iclm,k,jclm) = bscoef(3,k) - bscoef4(iclm,k,jclm) = bscoef(4,k) - l2aer(iclm,k,jclm,1) = l2(1,k) - l2aer(iclm,k,jclm,2) = l2(2,k) - l2aer(iclm,k,jclm,3) = l2(3,k) - l2aer(iclm,k,jclm,4) = l2(4,k) - l3aer(iclm,k,jclm,1) = l3(1,k) - l3aer(iclm,k,jclm,2) = l3(2,k) - l3aer(iclm,k,jclm,3) = l3(3,k) - l3aer(iclm,k,jclm,4) = l3(4,k) - l4aer(iclm,k,jclm,1) = l4(1,k) - l4aer(iclm,k,jclm,2) = l4(2,k) - l4aer(iclm,k,jclm,3) = l4(3,k) - l4aer(iclm,k,jclm,4) = l4(4,k) - l5aer(iclm,k,jclm,1) = l5(1,k) - l5aer(iclm,k,jclm,2) = l5(2,k) - l5aer(iclm,k,jclm,3) = l5(3,k) - l5aer(iclm,k,jclm,4) = l5(4,k) - l6aer(iclm,k,jclm,1) = l6(1,k) - l6aer(iclm,k,jclm,2) = l6(2,k) - l6aer(iclm,k,jclm,3) = l6(3,k) - l6aer(iclm,k,jclm,4) = l6(4,k) - l7aer(iclm,k,jclm,1) = l7(1,k) - l7aer(iclm,k,jclm,2) = l7(2,k) - l7aer(iclm,k,jclm,3) = l7(3,k) - l7aer(iclm,k,jclm,4) = l7(4,k) +!jdf +! write( msg, '(a, 5i4)' ) & +! 'jdf sw k', k, kts, kte, iclm, jclm +! call peg_message( lunerr, msg ) +!jdf + !shortwave + tauaersw(iclm,k,jclm,:) = swtauaer(:,k) + extaersw(iclm,k,jclm,:) = swextaer(:,k) + gaersw(iclm,k,jclm,:) = swgaer(:,k) + waersw(iclm,k,jclm,:) = swwaer(:,k) + bscoefsw(iclm,k,jclm,:) = swbscoef(:,k) + l2aer(iclm,k,jclm,:) = l2(:,k) + l3aer(iclm,k,jclm,:) = l3(:,k) + l4aer(iclm,k,jclm,:) = l4(:,k) + l5aer(iclm,k,jclm,:) = l5(:,k) + l6aer(iclm,k,jclm,:) = l6(:,k) + l7aer(iclm,k,jclm,:) = l7(:,k) + + !longwave + tauaerlw(iclm,k,jclm,1:nlwbands) = lwtauaer(1:nlwbands,k) + extaerlw(iclm,k,jclm,1:nlwbands) = lwextaer(1:nlwbands,k) enddo !!$ if(id.eq.1.and.iclm.eq.84.and.jclm.eq.52) then !!$ write(*,889) sizeaer(1,1),sizeaer(2,1),sizeaer(3,1),sizeaer(4,1) @@ -392,8 +470,12 @@ end subroutine optical_averaging ! in terms of other units. ! subroutine optical_prep_sectional(nbin_o, chem, alt, & - refindx, radius_wet, number_bin, & - radius_core, refindx_core, refindx_shell, & + totoa_a01, totoa_a02, totoa_a03, totoa_a04, & +! refindx, radius_wet, number_bin, & +! radius_core, refindx_core, refindx_shell, & + radius_core,radius_wet, number_bin, & + swrefindx,swrefindx_core,swrefindx_shell, & + lwrefindx,lwrefindx_core,lwrefindx_shell, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -412,47 +494,60 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), & INTENT(IN ) :: chem REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & - INTENT(IN ) :: alt + INTENT(IN ) :: alt, & + totoa_a01, totoa_a02, totoa_a03, totoa_a04 REAL, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & INTENT(OUT ) :: & radius_wet, number_bin, radius_core - COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & - INTENT(OUT ) :: & - refindx, refindx_core, refindx_shell +! COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & +! INTENT(OUT ) :: & +! refindx, refindx_core, refindx_shell + COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o,nswbands), & + INTENT(OUT ) :: swrefindx, swrefindx_core, swrefindx_shell + COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o,nlwbands), & + INTENT(OUT ) :: lwrefindx, lwrefindx_core, lwrefindx_shell ! ! local variables ! integer i, j, k, l, isize, itype, iphase integer p1st - complex ref_index_nh4so4 , ref_index_lvcite , ref_index_nh4hso4, & + complex ref_index_lvcite , ref_index_nh4hso4, & ref_index_nh4msa , ref_index_nh4no3 , ref_index_nh4cl , & - ref_index_nacl , ref_index_nano3 , ref_index_na2so4, & + ref_index_nano3 , ref_index_na2so4, & ref_index_na3hso4, ref_index_nahso4 , ref_index_namsa, & ref_index_caso4 , ref_index_camsa2 , ref_index_cano3, & ref_index_cacl2 , ref_index_caco3 , ref_index_h2so4, & ref_index_hhso4 , ref_index_hno3 , ref_index_hcl, & - ref_index_msa , ref_index_oc , ref_index_bc, & + ref_index_msa , ref_index_bc, & ref_index_oin , ref_index_aro1 , ref_index_aro2, & ref_index_alk1 , ref_index_ole1 , ref_index_api1, & ref_index_api2 , ref_index_im1 , ref_index_im2, & - ref_index_h2o , ri_dum , ri_ave_a + ri_dum , ri_ave_a + COMPLEX, DIMENSION(nswbands) :: & ! now only 5 aerosols have wave-dependent refr + swref_index_nh4so4,swref_index_nacl,swref_index_oc,swref_index_dust,swref_index_h2o + COMPLEX, DIMENSION(nlwbands) :: & ! now only 5 aerosols have wave-dependent refr + lwref_index_nh4so4,lwref_index_nacl,lwref_index_oc,lwref_index_dust,lwref_index_h2o real dens_so4 , dens_no3 , dens_cl , dens_msa , dens_co3 , & dens_nh4 , dens_na , dens_ca , dens_oin , dens_oc , & dens_bc , dens_aro1 , dens_aro2 , dens_alk1 , dens_ole1, & - dens_api1 , dens_api2 , dens_lim1 , dens_lim2 , dens_h2o + dens_api1 , dens_api2 , dens_lim1 , dens_lim2 , dens_h2o, & + dens_dust real mass_so4 , mass_no3 , mass_cl , mass_msa , mass_co3 , & mass_nh4 , mass_na , mass_ca , mass_oin , mass_oc , & mass_bc , mass_aro1 , mass_aro2 , mass_alk1 , mass_ole1, & - mass_api1 , mass_api2 , mass_lim1 , mass_lim2 , mass_h2o + mass_api1 , mass_api2 , mass_lim1 , mass_lim2 , mass_h2o, & + mass_dust real vol_so4 , vol_no3 , vol_cl , vol_msa , vol_co3 , & vol_nh4 , vol_na , vol_ca , vol_oin , vol_oc , & vol_bc , vol_aro1 , vol_aro2 , vol_alk1 , vol_ole1 , & - vol_api1 , vol_api2 , vol_lim1 , vol_lim2 , vol_h2o + vol_api1 , vol_api2 , vol_lim1 , vol_lim2 , vol_h2o, & + vol_dust real conv1a, conv1b real mass_dry_a, mass_wet_a, vol_dry_a , vol_wet_a , vol_shell, & dp_dry_a , dp_wet_a , num_a , dp_bc_a real num_a_lo , num_a_hi real refr + integer ns ! ! Define refractive indicies ! * assume na and cl are the same as nacl @@ -464,13 +559,27 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ! so4, no3, nh4, na, cl, msa, ca, co3 among various componds ! as was done previously in module_mosaic_therm.F ! - ref_index_nh4so4 = cmplx(1.52,0.) + do ns = 1, nswbands + swref_index_nh4so4(ns) = cmplx(refrsw_sulf(ns),refisw_sulf(ns)) + swref_index_oc(ns) = cmplx(refrsw_oc(ns),refisw_oc(ns)) + swref_index_dust(ns) = cmplx(refrsw_dust(ns),refisw_dust(ns)) + swref_index_nacl(ns) = cmplx(refrsw_seas(ns),refisw_seas(ns)) + swref_index_h2o(ns) = cmplx(refrwsw(ns),refiwsw(ns)) + enddo + do ns = 1, nlwbands + lwref_index_nh4so4(ns) = cmplx(refrlw_sulf(ns),refilw_sulf(ns)) + lwref_index_oc(ns) = cmplx(refrlw_oc(ns),refilw_oc(ns)) + lwref_index_dust(ns) = cmplx(refrlw_dust(ns),refilw_dust(ns)) + lwref_index_nacl(ns) = cmplx(refrlw_seas(ns),refilw_seas(ns)) + lwref_index_h2o(ns) = cmplx(refrwlw(ns),refiwlw(ns)) + enddo +! ref_index_nh4so4 = cmplx(1.52,0.) ref_index_lvcite = cmplx(1.50,0.) ref_index_nh4hso4= cmplx(1.47,0.) ref_index_nh4msa = cmplx(1.50,0.) ! assumed ref_index_nh4no3 = cmplx(1.50,0.) ref_index_nh4cl = cmplx(1.50,0.) - ref_index_nacl = cmplx(1.45,0.) +! ref_index_nacl = cmplx(1.45,0.) ref_index_nano3 = cmplx(1.50,0.) ref_index_na2so4 = cmplx(1.50,0.) ref_index_na3hso4= cmplx(1.50,0.) @@ -486,13 +595,14 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ref_index_hno3 = cmplx(1.50,0.) ref_index_hcl = cmplx(1.50,0.) ref_index_msa = cmplx(1.43,0.) ! assumed - ref_index_oc = cmplx(1.45,0.) ! JCB, Feb. 20, 2008: no complex part? +! ref_index_oc = cmplx(1.45,0.) ! JCB, Feb. 20, 2008: no complex part? ! JCB, Feb. 20, 2008: set the refractive index of BC equal to the midpoint ! of ranges given in Bond and Bergstrom, Light absorption by carboneceous ! particles: an investigative review 2006, Aerosol Sci. and Tech., 40:27-67. ! ref_index_bc = cmplx(1.82,0.74), old value ref_index_bc = cmplx(1.85,0.71) - ref_index_oin = cmplx(1.55,0.006) ! JCB, Feb. 20, 2008: if "other inorganics" includes dust, then this refractive index should be wavelength depedent + ref_index_oin = cmplx(1.55,0.006) ! JCB, Feb. 20, 2008 +! ref_index_dust = cmplx(1.55,0.003) ! czhao, dust, then this refractive index should be wavelength depedent ref_index_aro1 = cmplx(1.45,0.) ref_index_aro2 = cmplx(1.45,0.) ref_index_alk1 = cmplx(1.45,0.) @@ -501,7 +611,7 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ref_index_api2 = cmplx(1.45,0.) ref_index_im1 = cmplx(1.45,0.) ref_index_im2 = cmplx(1.45,0.) - ref_index_h2o = cmplx(1.33,0.) +! ref_index_h2o = cmplx(1.33,0.) ! ! densities in g/cc ! @@ -514,6 +624,7 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & dens_na = 2.2 ! used dens_ca = 2.6 ! used dens_oin = 2.6 ! used + dens_dust = 2.6 ! used dens_oc = 1.0 ! used ! JCB, Feb. 20, 2008: the density of BC is updated to reflect values ! published by Bond and Bergstrom, Light absorption by carboneceous @@ -532,20 +643,29 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ! p1st = param_first_scalar ! - do isize = 1, nbin_o - do j = jts, jte - do k = kts, kte - do i = its, ite - refindx(i,k,j,isize)=0.0 - radius_wet(i,k,j,isize)=0.0 - number_bin(i,k,j,isize)=0.0 - radius_core(i,k,j,isize)=0.0 - refindx_core(i,k,j,isize)=0.0 - refindx_shell(i,k,j,isize)=0.0 - enddo - enddo - enddo - enddo +! do isize = 1, nbin_o +! do j = jts, jte +! do k = kts, kte +! do i = its, ite +! refindx(i,k,j,isize)=0.0 +! radius_wet(i,k,j,isize)=0.0 +! number_bin(i,k,j,isize)=0.0 +! radius_core(i,k,j,isize)=0.0 +! refindx_core(i,k,j,isize)=0.0 +! refindx_shell(i,k,j,isize)=0.0 +! enddo +! enddo +! enddo +! enddo + radius_wet=0.0 + number_bin=0.0 + radius_core=0.0 + swrefindx=0.0 + swrefindx_core=0.0 + swrefindx_shell=0.0 + lwrefindx=0.0 + lwrefindx_core=0.0 + lwrefindx_shell=0.0 ! ! units: ! * mass - g/cc(air) @@ -563,6 +683,7 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & mass_no3 = 0.0 mass_nh4 = 0.0 mass_oin = 0.0 + mass_dust = 0.0 mass_oc = 0.0 mass_bc = 0.0 mass_na = 0.0 @@ -571,6 +692,15 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & mass_co3 = 0.0 mass_ca = 0.0 mass_h2o = 0.0 + mass_aro1=0.0 + mass_aro2=0.0 + mass_alk1=0.0 + mass_ole1=0.0 + mass_api1=0.0 + mass_api2=0.0 + mass_lim1=0.0 + mass_lim2=0.0 + ! convert ug / kg dry air to g / cc air conv1a = (1.0/alt(i,k,j)) * 1.0e-12 ! convert # / kg dry air to # / cc air @@ -583,8 +713,17 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & if (l .ge. p1st) mass_nh4= chem(i,k,j,l)*conv1a l=lptr_oin_aer(isize,itype,iphase) if (l .ge. p1st) mass_oin= chem(i,k,j,l)*conv1a +! +! if totoa from VBS available, use it +!jdfcz l=lptr_dust_aer(isize,itype,iphase) +!jdfcz if (l .ge. p1st) mass_dust= chem(i,k,j,l)*conv1a l=lptr_oc_aer(isize,itype,iphase) if (l .ge. p1st) mass_oc= chem(i,k,j,l)*conv1a + if (totoa_a01(i,k,j) .gt. 1.0e-12 .and. isize .eq. 1) mass_oc=totoa_a01(i,k,j)*conv1a + if (totoa_a02(i,k,j) .gt. 1.0e-12 .and. isize .eq. 2) mass_oc=totoa_a02(i,k,j)*conv1a + if (totoa_a03(i,k,j) .gt. 1.0e-12 .and. isize .eq. 3) mass_oc=totoa_a03(i,k,j)*conv1a + if (totoa_a04(i,k,j) .gt. 1.0e-12 .and. isize .eq. 4) mass_oc=totoa_a04(i,k,j)*conv1a +! l=lptr_bc_aer(isize,itype,iphase) if (l .ge. p1st) mass_bc= chem(i,k,j,l)*conv1a l=lptr_na_aer(isize,itype,iphase) @@ -604,8 +743,17 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ! vol_so4 = mass_so4 / dens_so4 vol_no3 = mass_no3 / dens_no3 + vol_aro1= mass_aro1 / dens_aro1 + vol_aro2= mass_aro2 / dens_aro2 + vol_alk1= mass_alk1 / dens_alk1 + vol_ole1= mass_ole1 / dens_ole1 + vol_api1= mass_api1 / dens_api1 + vol_api2= mass_api2 / dens_api2 + vol_lim1= mass_lim1 / dens_lim1 + vol_lim2= mass_lim2 / dens_lim2 vol_nh4 = mass_nh4 / dens_nh4 vol_oin = mass_oin / dens_oin +!jdfcz vol_dust = mass_dust / dens_dust vol_oc = mass_oc / dens_oc vol_bc = mass_bc / dens_bc vol_na = mass_na / dens_na @@ -617,11 +765,18 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & vol_h2o = mass_h2o / dens_h2o mass_dry_a = mass_so4 + mass_no3 + mass_nh4 + mass_oin + & mass_oc + mass_bc + mass_na + mass_cl + & - mass_msa + mass_co3 + mass_ca + mass_msa + mass_co3 + mass_ca + mass_aro1 + & + mass_aro2 + mass_alk1 + mass_ole1 +mass_api1 + & +!jdfcz mass_api2 + mass_lim1 + mass_lim2 + mass_dust + mass_api2 + mass_lim1 + mass_lim2 mass_wet_a = mass_dry_a + mass_h2o vol_dry_a = vol_so4 + vol_no3 + vol_nh4 + vol_oin + & vol_oc + vol_bc + vol_na + vol_cl + & - vol_msa + vol_co3 + vol_ca + vol_msa + vol_co3 + vol_ca + vol_aro1 + & + vol_aro2 + vol_alk1 + vol_ole1 + vol_api1 + & +!jdfcz vol_api2 + vol_lim1 + vol_lim2 + vol_dust + vol_api2 + vol_lim1 + vol_lim2 + vol_wet_a = vol_dry_a + vol_h2o vol_shell = vol_wet_a - vol_bc ! jdf: Adjustment of aerosol number if it falls outside of reasonable bounds. @@ -630,74 +785,149 @@ subroutine optical_prep_sectional(nbin_o, chem, alt, & ! of these quantities. num_a_lo=1.90985*vol_dry_a/(dlo_sect(isize,itype)**3) num_a_hi=1.90985*vol_dry_a/(dhi_sect(isize,itype)**3) + +!czhao fixed the diameter when mass and number of aerosols drops to an extreme low values + if (vol_dry_a.le.1.e-15.and.num_a.le.1.e-10) then + if(num_a.gt.num_a_lo) then + num_a=num_a_lo + elseif(num_a.lt.num_a_hi) then + num_a=num_a_hi + endif + dp_dry_a = dhi_sect(isize,itype) + dp_wet_a = dhi_sect(isize,itype) + dp_bc_a = dhi_sect(isize,itype) + else if(num_a.gt.num_a_lo) then -! if(i.eq.84.and.j.eq.52) then -! print*,'jdf adjust lower',k,isize,vol_dry_a,num_a,num_a_lo,num_a_hi -! endif num_a=num_a_lo elseif(num_a.lt.num_a_hi) then -! if(i.eq.84.and.j.eq.52) then -! print*,'jdf adjust higher',k,isize,vol_dry_a,num_a,num_a_lo,num_a_hi -! endif num_a=num_a_hi endif ! dp_dry_a = (1.90985*vol_dry_a/num_a)**0.3333333 dp_wet_a = (1.90985*vol_wet_a/num_a)**0.3333333 dp_bc_a = (1.90985*vol_bc/num_a)**0.3333333 + endif + + + !shortwave + do ns=1,nswbands ri_dum = (0.0,0.0) - ri_dum = (ref_index_nh4so4 * mass_so4 / dens_so4) + & + ri_dum = (swref_index_nh4so4(ns) * mass_so4 / dens_so4) + & (ref_index_nh4no3 * mass_no3 / dens_no3) + & (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & (ref_index_oin * mass_oin / dens_oin) + & - (ref_index_oc * mass_oc / dens_oc) + & +!jdfcz (swref_index_dust(ns) * mass_dust / dens_dust) + & + (swref_index_oc(ns) * mass_oc / dens_oc) + & (ref_index_bc * mass_bc / dens_bc) + & - (ref_index_nacl * mass_na / dens_na) + & - (ref_index_nacl * mass_cl / dens_cl) + & + (swref_index_nacl(ns) * mass_na / dens_na) + & + (swref_index_nacl(ns) * mass_cl / dens_cl) + & (ref_index_msa * mass_msa / dens_msa) + & (ref_index_caco3 * mass_ca / dens_ca) + & (ref_index_caco3 * mass_co3 / dens_co3) + & - (ref_index_h2o * mass_h2o / dens_h2o) + (swref_index_h2o(ns) * mass_h2o / dens_h2o) ri_ave_a = ri_dum/vol_wet_a - ri_dum = (ref_index_nh4so4 * mass_so4 / dens_so4) + & + ri_dum = (swref_index_nh4so4(ns) * mass_so4 / dens_so4) + & (ref_index_nh4no3 * mass_no3 / dens_no3) + & (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & (ref_index_oin * mass_oin / dens_oin) + & - (ref_index_oc * mass_oc / dens_oc) + & - (ref_index_nacl * mass_na / dens_na) + & - (ref_index_nacl * mass_cl / dens_cl) + & +!jdfcz (swref_index_dust(ns) * mass_dust / dens_dust) + & + (swref_index_oc(ns) * mass_oc / dens_oc) + & + (swref_index_nacl(ns) * mass_na / dens_na) + & + (swref_index_nacl(ns) * mass_cl / dens_cl) + & (ref_index_msa * mass_msa / dens_msa) + & (ref_index_caco3 * mass_ca / dens_ca) + & (ref_index_caco3 * mass_co3 / dens_co3) + & - (ref_index_h2o * mass_h2o / dens_h2o) + (swref_index_h2o(ns) * mass_h2o / dens_h2o) if(dp_wet_a/2.0 .lt. dlo_sect(isize,itype)/2.0) then - refindx(i,k,j,isize) = (1.5,0.0) + swrefindx(i,k,j,isize,ns) = (1.5,0.0) radius_wet(i,k,j,isize) =dlo_sect(isize,itype)/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =0.0 - refindx_core(i,k,j,isize) = ref_index_bc - refindx_shell(i,k,j,isize) = ref_index_oin + swrefindx_core(i,k,j,isize,ns) = ref_index_bc + swrefindx_shell(i,k,j,isize,ns) = ref_index_oin +! refindx_core(i,k,j,isize) = ref_index_bc +! refindx_shell(i,k,j,isize) = ref_index_oin elseif(vol_shell .lt. 1.0e-20) then - refindx(i,k,j,isize) = (1.5,0.0) + swrefindx(i,k,j,isize,ns) = (1.5,0.0) radius_wet(i,k,j,isize) =dlo_sect(isize,itype)/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =0.0 - refindx_core(i,k,j,isize) = ref_index_bc - refindx_shell(i,k,j,isize) = ref_index_oin +! refindx_core(i,k,j,isize) = ref_index_bc +! refindx_shell(i,k,j,isize) = ref_index_oin + swrefindx_core(i,k,j,isize,ns) = ref_index_bc + swrefindx_shell(i,k,j,isize,ns) = ref_index_oin else - refindx(i,k,j,isize) =ri_ave_a +! refindx(i,k,j,isize) =ri_ave_a + swrefindx(i,k,j,isize,ns) =ri_ave_a radius_wet(i,k,j,isize) =dp_wet_a/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =dp_bc_a/2.0 - refindx_core(i,k,j,isize) =ref_index_bc - refindx_shell(i,k,j,isize) =ri_dum/vol_shell +! refindx_core(i,k,j,isize) =ref_index_bc +! refindx_shell(i,k,j,isize) =ri_dum/vol_shell + swrefindx_core(i,k,j,isize,ns) =ref_index_bc + swrefindx_shell(i,k,j,isize,ns) =ri_dum/vol_shell endif -! - refr=real(refindx(i,k,j,isize)) - enddo - enddo - enddo - enddo +! refr=real(refindx(i,k,j,isize)) + enddo ! ns shortwave + + ! longwave + do ns = 1, nlwbands + ri_dum = (0.0,0.0) + ri_dum = (lwref_index_nh4so4(ns) * mass_so4 / dens_so4) + & + (ref_index_nh4no3 * mass_no3 / dens_no3) + & + (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & + (ref_index_oin * mass_oin / dens_oin) + & +!jdfcz (lwref_index_dust(ns) * mass_dust / dens_dust) + & + (lwref_index_oc(ns) * mass_oc / dens_oc) + & + (ref_index_bc * mass_bc / dens_bc) + & + (lwref_index_nacl(ns) * mass_na / dens_na) + & + (lwref_index_nacl(ns) * mass_cl / dens_cl) + & + (ref_index_msa * mass_msa / dens_msa) + & + (ref_index_caco3 * mass_ca / dens_ca) + & + (ref_index_caco3 * mass_co3 / dens_co3) + & + (lwref_index_h2o(ns) * mass_h2o / dens_h2o) + ri_ave_a = ri_dum/vol_wet_a + ri_dum = (lwref_index_nh4so4(ns) * mass_so4 / dens_so4) + & + (ref_index_nh4no3 * mass_no3 / dens_no3) + & + (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & + (ref_index_oin * mass_oin / dens_oin) + & +!jdfcz (lwref_index_dust(ns) * mass_dust / dens_dust) + & + (lwref_index_oc(ns) * mass_oc / dens_oc) + & + (lwref_index_nacl(ns) * mass_na / dens_na) + & + (lwref_index_nacl(ns) * mass_cl / dens_cl) + & + (ref_index_msa * mass_msa / dens_msa) + & + (ref_index_caco3 * mass_ca / dens_ca) + & + (ref_index_caco3 * mass_co3 / dens_co3) + & + (lwref_index_h2o(ns) * mass_h2o / dens_h2o) + if(dp_wet_a/2.0 .lt. dlo_sect(isize,itype)/2.0) then + lwrefindx(i,k,j,isize,ns) = (1.5,0.0) + radius_wet(i,k,j,isize) =dlo_sect(isize,itype)/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =0.0 + lwrefindx_core(i,k,j,isize,ns) = ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) = ref_index_oin + elseif(vol_shell .lt. 1.0e-20) then + lwrefindx(i,k,j,isize,ns) = (1.5,0.0) + radius_wet(i,k,j,isize) =dlo_sect(isize,itype)/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =0.0 + lwrefindx_core(i,k,j,isize,ns) = ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) = ref_index_oin + else + lwrefindx(i,k,j,isize,ns) =ri_ave_a + radius_wet(i,k,j,isize) =dp_wet_a/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =dp_bc_a/2.0 + lwrefindx_core(i,k,j,isize,ns) =ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) =ri_dum/vol_shell + endif +! refr=real(refindx(i,k,j,isize)) + enddo ! ns longwave + + enddo ! isize + enddo ! i + enddo ! j + enddo ! k return @@ -709,8 +939,11 @@ end subroutine optical_prep_sectional ! in terms of other units. ! subroutine optical_prep_modal(nbin_o, chem, alt, & - h2oai, h2oaj, refindx, radius_wet, number_bin, & - radius_core, refindx_core, refindx_shell, & +! h2oai, h2oaj, refindx, radius_wet, number_bin, & +! radius_core, refindx_core, refindx_shell, & + h2oai, h2oaj, radius_core,radius_wet, number_bin, & + swrefindx, swrefindx_core, swrefindx_shell, & + lwrefindx, lwrefindx_core, lwrefindx_shell, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -732,55 +965,68 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & REAL, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & INTENT(OUT ) :: & radius_wet, number_bin, radius_core - COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & - INTENT(OUT ) :: & - refindx, refindx_core, refindx_shell +! COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte, 1:nbin_o), & +! INTENT(OUT ) :: & +! refindx, refindx_core, refindx_shell + COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte,1:nbin_o,nswbands), & + INTENT(OUT ) :: swrefindx, swrefindx_core, swrefindx_shell + COMPLEX, DIMENSION( its:ite, kts:kte, jts:jte,1:nbin_o,nlwbands), & + INTENT(OUT ) :: lwrefindx, lwrefindx_core, lwrefindx_shell ! ! local variables ! integer i, j, k, l, isize, itype, iphase integer p1st - complex ref_index_nh4so4 , ref_index_lvcite , ref_index_nh4hso4, & + complex ref_index_lvcite , ref_index_nh4hso4, & ref_index_nh4msa , ref_index_nh4no3 , ref_index_nh4cl , & - ref_index_nacl , ref_index_nano3 , ref_index_na2so4, & + ref_index_nano3 , ref_index_na2so4, & ref_index_na3hso4, ref_index_nahso4 , ref_index_namsa, & ref_index_caso4 , ref_index_camsa2 , ref_index_cano3, & ref_index_cacl2 , ref_index_caco3 , ref_index_h2so4, & ref_index_hhso4 , ref_index_hno3 , ref_index_hcl, & - ref_index_msa , ref_index_oc , ref_index_bc, & + ref_index_msa , ref_index_bc, & ref_index_oin , ref_index_aro1 , ref_index_aro2, & ref_index_alk1 , ref_index_ole1 , ref_index_api1, & - ref_index_api2 , ref_index_im1 , ref_index_im2, & - ref_index_h2o , ri_dum , ri_ave_a + ref_index_api2 , ref_index_lim1 , ref_index_lim2, & + ri_dum , ri_ave_a + COMPLEX, DIMENSION(nswbands) :: & ! now only 5 aerosols have wave-dependent refr + swref_index_oc , swref_index_dust , swref_index_nh4so4, swref_index_nacl,swref_index_h2o + COMPLEX, DIMENSION(nlwbands) :: & ! now only 5 aerosols have wave-dependent refr + lwref_index_oc , lwref_index_dust , lwref_index_nh4so4, lwref_index_nacl,lwref_index_h2o + real dens_so4 , dens_no3 , dens_cl , dens_msa , dens_co3 , & dens_nh4 , dens_na , dens_ca , dens_oin , dens_oc , & dens_bc , dens_aro1 , dens_aro2 , dens_alk1 , dens_ole1, & - dens_api1 , dens_api2 , dens_lim1 , dens_lim2 , dens_h2o + dens_api1 , dens_api2 , dens_lim1 , dens_lim2 , dens_h2o , & + dens_dust real mass_so4 , mass_no3 , mass_cl , mass_msa , mass_co3 , & mass_nh4 , mass_na , mass_ca , mass_oin , mass_oc , & mass_bc , mass_aro1 , mass_aro2 , mass_alk1 , mass_ole1, & - mass_api1 , mass_api2 , mass_lim1 , mass_lim2 , mass_h2o + mass_api1 , mass_api2 , mass_lim1 , mass_lim2 , mass_h2o, & + mass_dust real mass_so4i , mass_no3i , mass_cli , mass_msai , mass_co3i, & mass_nh4i , mass_nai , mass_cai , mass_oini , mass_oci , & mass_bci , mass_aro1i, mass_aro2i, mass_alk1i, mass_ole1i, & mass_ba1i , mass_ba2i, mass_ba3i , mass_ba4i , mass_pai, & - mass_h2oi + mass_h2oi , mass_dusti real mass_so4j , mass_no3j , mass_clj , mass_msaj , mass_co3j, & mass_nh4j , mass_naj , mass_caj , mass_oinj , mass_ocj , & mass_bcj , mass_aro1j, mass_aro2j, mass_alk1j, mass_ole1j, & mass_ba1j , mass_ba2j, mass_ba3j , mass_ba4j , mass_paj, & - mass_h2oj + mass_h2oj , mass_dustj real mass_antha, mass_seas, mass_soil real num_ai, num_aj, num_ac, vol_ai, vol_aj, vol_ac real vol_so4 , vol_no3 , vol_cl , vol_msa , vol_co3 , & vol_nh4 , vol_na , vol_ca , vol_oin , vol_oc , & vol_bc , vol_aro1 , vol_aro2 , vol_alk1 , vol_ole1 , & - vol_api1 , vol_api2 , vol_lim1 , vol_lim2 , vol_h2o + vol_api1 , vol_api2 , vol_lim1 , vol_lim2 , vol_h2o , & + vol_dust real conv1a, conv1b real mass_dry_a, mass_wet_a, vol_dry_a , vol_wet_a , vol_shell, & dp_dry_a , dp_wet_a , num_a , dp_bc_a real ifac, jfac, cfac real refr + integer ns real dgnum_um,drydens,duma,dlo_um,dhi_um,dgmin,sixpi,ss1,ss2,ss3,dtemp integer iflag real, dimension(1:nbin_o) :: xnum_secti,xnum_sectj,xnum_sectc @@ -821,13 +1067,28 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & ! so4, no3, nh4, na, cl, msa, ca, co3 among various componds ! as was done previously in module_mosaic_therm.F ! - ref_index_nh4so4 = cmplx(1.52,0.) + do ns = 1, nswbands + swref_index_nh4so4(ns) = cmplx(refrsw_sulf(ns),refisw_sulf(ns)) + swref_index_oc(ns) = cmplx(refrsw_oc(ns),refisw_oc(ns)) + swref_index_dust(ns) = cmplx(refrsw_dust(ns),refisw_dust(ns)) + swref_index_nacl(ns) = cmplx(refrsw_seas(ns),refisw_seas(ns)) + swref_index_h2o(ns) = cmplx(refrwsw(ns),refiwsw(ns)) + enddo + do ns = 1, nlwbands + lwref_index_nh4so4(ns) = cmplx(refrlw_sulf(ns),refilw_sulf(ns)) + lwref_index_oc(ns) = cmplx(refrlw_oc(ns),refilw_oc(ns)) + lwref_index_dust(ns) = cmplx(refrlw_dust(ns),refilw_dust(ns)) + lwref_index_nacl(ns) = cmplx(refrlw_seas(ns),refilw_seas(ns)) + lwref_index_h2o(ns) = cmplx(refrwlw(ns),refiwlw(ns)) + enddo + +! ref_index_nh4so4 = cmplx(1.52,0.) ref_index_lvcite = cmplx(1.50,0.) ref_index_nh4hso4= cmplx(1.47,0.) ref_index_nh4msa = cmplx(1.50,0.) ! assumed ref_index_nh4no3 = cmplx(1.50,0.) ref_index_nh4cl = cmplx(1.50,0.) - ref_index_nacl = cmplx(1.45,0.) +! ref_index_nacl = cmplx(1.45,0.) ref_index_nano3 = cmplx(1.50,0.) ref_index_na2so4 = cmplx(1.50,0.) ref_index_na3hso4= cmplx(1.50,0.) @@ -843,23 +1104,24 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & ref_index_hno3 = cmplx(1.50,0.) ref_index_hcl = cmplx(1.50,0.) ref_index_msa = cmplx(1.43,0.) ! assumed - ref_index_oc = cmplx(1.45,0.) ! JCB, Feb. 20, 2008: no complex part? +! ref_index_oc = cmplx(1.45,0.) ! JCB, Feb. 20, 2008: no complex part? ! JCB, Feb. 20, 2008: set the refractive index of BC equal to the ! midpoint of ranges given in Bond and Bergstrom, Light absorption by ! carboneceous particles: an investigative review 2006, Aerosol Sci. ! and Tech., 40:27-67. ! ref_index_bc = cmplx(1.82,0.74) old value ref_index_bc = cmplx(1.85,0.71) - ref_index_oin = cmplx(1.55,0.006) ! JCB, Feb. 20, 2008: if "other inorganics" includes dust, then this refractive index should be wavelength depedent + ref_index_oin = cmplx(1.55,0.006) ! JCB, Feb. 20, 2008: "other inorganics" +! ref_index_dust = cmplx(1.55,0.003) ! czhao, this refractive index should be wavelength depedent ref_index_aro1 = cmplx(1.45,0.) ref_index_aro2 = cmplx(1.45,0.) ref_index_alk1 = cmplx(1.45,0.) ref_index_ole1 = cmplx(1.45,0.) ref_index_api1 = cmplx(1.45,0.) ref_index_api2 = cmplx(1.45,0.) - ref_index_im1 = cmplx(1.45,0.) - ref_index_im2 = cmplx(1.45,0.) - ref_index_h2o = cmplx(1.33,0.) + ref_index_lim1 = cmplx(1.45,0.) + ref_index_lim2 = cmplx(1.45,0.) +! ref_index_h2o = cmplx(1.33,0.) ! ! densities in g/cc ! @@ -872,6 +1134,7 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & dens_na = 2.2 ! used dens_ca = 2.6 ! used dens_oin = 2.6 ! used + dens_dust = 2.6 ! used dens_oc = 1.0 ! used ! JCB, Feb. 20, 2008: the density of BC is updated to reflect values ! published by Bond and Bergstrom, Light absorption by carboneceous @@ -890,20 +1153,15 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & ! p1st = param_first_scalar ! - do isize = 1, nbin_o - do j = jts, jte - do k = kts, kte - do i = its, ite - refindx(i,k,j,isize)=0.0 - radius_wet(i,k,j,isize)=0.0 - number_bin(i,k,j,isize)=0.0 - radius_core(i,k,j,isize)=0.0 - refindx_core(i,k,j,isize)=0.0 - refindx_shell(i,k,j,isize)=0.0 - enddo - enddo - enddo - enddo + swrefindx=0.0 + lwrefindx=0.0 + radius_wet=0.0 + number_bin=0.0 + radius_core=0.0 + swrefindx_core=0.0 + swrefindx_shell=0.0 + lwrefindx_core=0.0 + lwrefindx_shell=0.0 ! ! units: ! * mass - g/cc(air) @@ -924,6 +1182,8 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & mass_nh4j = 0.0 mass_oini = 0.0 mass_oinj = 0.0 + mass_dusti = 0.0 + mass_dustj = 0.0 mass_aro1i = 0.0 mass_aro1j = 0.0 mass_aro2i = 0.0 @@ -988,6 +1248,8 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & if (l .ge. p1st) mass_nh4j= chem(i,k,j,l)*conv1a l=lptr_p25_aer(isize,itype,iphase) if (l .ge. p1st) mass_oinj= chem(i,k,j,l)*conv1a +!jdfcz l=lptr_dust_aer(isize,itype,iphase) +!jdfcz if (l .ge. p1st) mass_dustj= chem(i,k,j,l)*conv1a l=lptr_orgaro1_aer(isize,itype,iphase) if (l .ge. p1st) mass_aro1j= chem(i,k,j,l)*conv1a l=lptr_orgaro2_aer(isize,itype,iphase) @@ -1029,6 +1291,8 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & if (l .ge. p1st) mass_nh4i= chem(i,k,j,l)*conv1a l=lptr_p25_aer(isize,itype,iphase) if (l .ge. p1st) mass_oini= chem(i,k,j,l)*conv1a +!jdfcz l=lptr_dust_aer(isize,itype,iphase) +!jdfcz if (l .ge. p1st) mass_dusti= chem(i,k,j,l)*conv1a l=lptr_orgaro1_aer(isize,itype,iphase) if (l .ge. p1st) mass_aro1i= chem(i,k,j,l)*conv1a l=lptr_orgaro2_aer(isize,itype,iphase) @@ -1079,6 +1343,8 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & (mass_ba4i/dens_oc)+(mass_pai/dens_oc)+ & (mass_aro2i/dens_oc)+(mass_bci/dens_bc)+ & (mass_nai/dens_na)+(mass_cli/dens_cl) +!jdfcz (mass_nai/dens_na)+(mass_cli/dens_cl) + & +!jdfcz (mass_dusti/dens_dust) vol_aj = (mass_so4j/dens_so4)+(mass_no3j/dens_no3)+ & (mass_nh4j/dens_nh4)+(mass_oinj/dens_oin)+ & (mass_aro1j/dens_oc)+(mass_alk1j/dens_oc)+ & @@ -1087,10 +1353,12 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & (mass_ba4j/dens_oc)+(mass_paj/dens_oc)+ & (mass_aro2j/dens_oc)+(mass_bcj/dens_bc)+ & (mass_naj/dens_na)+(mass_clj/dens_cl) +!jdfcz (mass_naj/dens_na)+(mass_clj/dens_cl) + & +!jdfcz (mass_dustj/dens_dust) vol_ac = (mass_antha/dens_oin)+ & (mass_seas*(22.9897/58.4428)/dens_na)+ & (mass_seas*(35.4270/58.4428)/dens_cl)+ & - (mass_soil/dens_oin) + (mass_soil/dens_dust) ! ! Now divide mass into sections which is done by sect02: ! * xmas_secti is for aiken mode @@ -1124,7 +1392,9 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & mass_no3 = mass_no3i*xmas_secti(isize) + mass_no3j*xmas_sectj(isize) mass_nh4 = mass_nh4i*xmas_secti(isize) + mass_nh4j*xmas_sectj(isize) mass_oin = mass_oini*xmas_secti(isize) + mass_oinj*xmas_sectj(isize) + & - mass_soil*xmas_sectc(isize) + mass_antha*xmas_sectc(isize) + mass_antha*xmas_sectc(isize) +!jdfcz mass_dust= mass_dusti*xmas_secti(isize) + mass_dustj*xmas_sectj(isize) + & +!jdfcz mass_soil*xmas_sectc(isize) mass_oc = (mass_pai+mass_aro1i+mass_aro2i+mass_alk1i+mass_ole1i+ & mass_ba1i+mass_ba2i+mass_ba3i+mass_ba4i)*xmas_secti(isize) + & (mass_paj+mass_aro1j+mass_aro2j+mass_alk1j+mass_ole1j+ & @@ -1140,37 +1410,60 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & vol_no3 = mass_no3 / dens_no3 vol_nh4 = mass_nh4 / dens_nh4 vol_oin = mass_oin / dens_oin +!jdfcz vol_dust = mass_dust / dens_dust vol_oc = mass_oc / dens_oc vol_bc = mass_bc / dens_bc vol_na = mass_na / dens_na vol_cl = mass_cl / dens_cl vol_h2o = mass_h2o / dens_h2o +!!$ if(i.eq.50.and.j.eq.40.and.k.eq.1) then +!!$ print*,'jdf print bin',isize +!!$ print*,'so4',mass_so4,vol_so4 +!!$ print*,'no3',mass_no3,vol_no3 +!!$ print*,'nh4',mass_nh4,vol_nh4 +!!$ print*,'oin',mass_oin,vol_oin +!!$!jdfcz print*,'dust',mass_dust,vol_dust +!!$ print*,'oc ',mass_oc,vol_oc +!!$ print*,'bc ',mass_bc,vol_bc +!!$ print*,'na ',mass_na,vol_na +!!$ print*,'cl ',mass_cl,vol_cl +!!$ print*,'h2o',mass_h2o,vol_h2o +!!$ endif mass_dry_a = mass_so4 + mass_no3 + mass_nh4 + mass_oin + & +!jdfcz mass_oc + mass_bc + mass_na + mass_cl + mass_dust mass_oc + mass_bc + mass_na + mass_cl mass_wet_a = mass_dry_a + mass_h2o vol_dry_a = vol_so4 + vol_no3 + vol_nh4 + vol_oin + & +!jdfcz vol_oc + vol_bc + vol_na + vol_cl + vol_dust vol_oc + vol_bc + vol_na + vol_cl vol_wet_a = vol_dry_a + vol_h2o vol_shell = vol_wet_a - vol_bc - num_a = vol_wet_a / (0.52359877*xdia_cm(isize)*xdia_cm(isize)*xdia_cm(isize)) + !num_a = vol_wet_a / (0.52359877*xdia_cm(isize)*xdia_cm(isize)*xdia_cm(isize)) + !czhao + num_a = num_ai*xnum_secti(isize)+num_aj*xnum_sectj(isize)+num_ac*xnum_sectc(isize) + + + !shortwave + do ns=1,nswbands ri_dum = (0.0,0.0) - ri_dum = (ref_index_nh4so4 * mass_so4 / dens_so4) + & + ri_dum = (swref_index_nh4so4(ns) * mass_so4 / dens_so4) + & (ref_index_nh4no3 * mass_no3 / dens_no3) + & (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & (ref_index_oin * mass_oin / dens_oin) + & - (ref_index_oc * mass_oc / dens_oc) + & +!jdfcz (swref_index_dust(ns) * mass_dust / dens_dust) + & + (swref_index_oc(ns) * mass_oc / dens_oc) + & (ref_index_bc * mass_bc / dens_bc) + & - (ref_index_nacl * mass_na / dens_na) + & - (ref_index_nacl * mass_cl / dens_cl) + & - (ref_index_h2o * mass_h2o / dens_h2o) + (swref_index_nacl(ns) * mass_na / dens_na) + & + (swref_index_nacl(ns) * mass_cl / dens_cl) + & + (swref_index_h2o(ns) * mass_h2o / dens_h2o) ! ! for some reason MADE/SORGAM occasionally produces zero aerosols so ! need to add a check here to avoid divide by zero ! IF(num_a .lt. 1.0e-20 .or. vol_wet_a .lt. 1.0e-20) then - dp_dry_a = 0.0 - dp_wet_a = 0.0 - dp_bc_a = 0.0 + dp_dry_a = xdia_cm(isize) + dp_wet_a = xdia_cm(isize) + dp_bc_a = xdia_cm(isize) ri_ave_a = 0.0 ri_dum = 0.0 else @@ -1178,47 +1471,113 @@ subroutine optical_prep_modal(nbin_o, chem, alt, & dp_wet_a = (1.90985*vol_wet_a/num_a)**0.3333333 dp_bc_a = (1.90985*vol_bc/num_a)**0.3333333 ri_ave_a = ri_dum/vol_wet_a - ri_dum = (ref_index_nh4so4 * mass_so4 / dens_so4) + & + ri_dum = (swref_index_nh4so4(ns) * mass_so4 / dens_so4) + & (ref_index_nh4no3 * mass_no3 / dens_no3) + & (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & (ref_index_oin * mass_oin / dens_oin) + & - (ref_index_oc * mass_oc / dens_oc) + & - (ref_index_nacl * mass_na / dens_na) + & - (ref_index_nacl * mass_cl / dens_cl) + & - (ref_index_h2o * mass_h2o / dens_h2o) +!jdfcz (swref_index_dust(ns) * mass_dust / dens_dust) + & + (swref_index_oc(ns) * mass_oc / dens_oc) + & + (swref_index_nacl(ns) * mass_na / dens_na) + & + (swref_index_nacl(ns) * mass_cl / dens_cl) + & + (swref_index_h2o(ns) * mass_h2o / dens_h2o) endif if(dp_wet_a/2.0 .lt. dlo_um*1.0e-4/2.0) then - refindx(i,k,j,isize) = (1.5,0.0) + swrefindx(i,k,j,isize,ns) = (1.5,0.0) radius_wet(i,k,j,isize) =dlo_um*1.0e-4/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =0.0 - refindx_core(i,k,j,isize) = ref_index_bc - refindx_shell(i,k,j,isize) = ref_index_oin + swrefindx_core(i,k,j,isize,ns) = ref_index_bc + swrefindx_shell(i,k,j,isize,ns) = ref_index_oin elseif(vol_shell .lt. 1.0e-20) then - refindx(i,k,j,isize) = (1.5,0.0) + swrefindx(i,k,j,isize,ns) = (1.5,0.0) radius_wet(i,k,j,isize) =dlo_um*1.0e-4/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =0.0 - refindx_core(i,k,j,isize) = ref_index_bc - refindx_shell(i,k,j,isize) = ref_index_oin + swrefindx_core(i,k,j,isize,ns) = ref_index_bc + swrefindx_shell(i,k,j,isize,ns) = ref_index_oin else - refindx(i,k,j,isize) =ri_ave_a + swrefindx(i,k,j,isize,ns) =ri_ave_a radius_wet(i,k,j,isize) =dp_wet_a/2.0 number_bin(i,k,j,isize) =num_a radius_core(i,k,j,isize) =dp_bc_a/2.0 - refindx_core(i,k,j,isize) =ref_index_bc - refindx_shell(i,k,j,isize) =ri_dum/vol_shell + swrefindx_core(i,k,j,isize,ns) =ref_index_bc + swrefindx_shell(i,k,j,isize,ns) =ri_dum/vol_shell endif + enddo ! ns shortwave + + !longwave + do ns=1,nlwbands + ri_dum = (0.0,0.0) + ri_dum = (lwref_index_nh4so4(ns) * mass_so4 / dens_so4) + & + (ref_index_nh4no3 * mass_no3 / dens_no3) + & + (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & + (ref_index_oin * mass_oin / dens_oin) + & +!jdfcz (lwref_index_dust(ns) * mass_dust / dens_dust) + & + (lwref_index_oc(ns) * mass_oc / dens_oc) + & + (ref_index_bc * mass_bc / dens_bc) + & + (lwref_index_nacl(ns) * mass_na / dens_na) + & + (lwref_index_nacl(ns) * mass_cl / dens_cl) + & + (lwref_index_h2o(ns) * mass_h2o / dens_h2o) ! - refr=real(refindx(i,k,j,isize)) - enddo - enddo - enddo - enddo +! for some reason MADE/SORGAM occasionally produces zero aerosols so +! need to add a check here to avoid divide by zero +! + IF(num_a .lt. 1.0e-20 .or. vol_wet_a .lt. 1.0e-20) then + dp_dry_a = xdia_cm(isize) + dp_wet_a = xdia_cm(isize) + dp_bc_a = xdia_cm(isize) + ri_ave_a = 0.0 + ri_dum = 0.0 + else + dp_dry_a = (1.90985*vol_dry_a/num_a)**0.3333333 + dp_wet_a = (1.90985*vol_wet_a/num_a)**0.3333333 + dp_bc_a = (1.90985*vol_bc/num_a)**0.3333333 + ri_ave_a = ri_dum/vol_wet_a + ri_dum = (lwref_index_nh4so4(ns) * mass_so4 / dens_so4) + & + (ref_index_nh4no3 * mass_no3 / dens_no3) + & + (ref_index_nh4no3 * mass_nh4 / dens_nh4) + & + (ref_index_oin * mass_oin / dens_oin) + & +!jdfcz (lwref_index_dust(ns) * mass_dust / dens_dust) + & + (lwref_index_oc(ns) * mass_oc / dens_oc) + & + (lwref_index_nacl(ns) * mass_na / dens_na) + & + (lwref_index_nacl(ns) * mass_cl / dens_cl) + & + (lwref_index_h2o(ns) * mass_h2o / dens_h2o) + endif + if(dp_wet_a/2.0 .lt. dlo_um*1.0e-4/2.0) then + lwrefindx(i,k,j,isize,ns) = (1.5,0.0) + radius_wet(i,k,j,isize) =dlo_um*1.0e-4/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =0.0 + lwrefindx_core(i,k,j,isize,ns) = ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) = ref_index_oin + elseif(vol_shell .lt. 1.0e-20) then + lwrefindx(i,k,j,isize,ns) = (1.5,0.0) + radius_wet(i,k,j,isize) =dlo_um*1.0e-4/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =0.0 + lwrefindx_core(i,k,j,isize,ns) = ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) = ref_index_oin + else + lwrefindx(i,k,j,isize,ns) =ri_ave_a + radius_wet(i,k,j,isize) =dp_wet_a/2.0 + number_bin(i,k,j,isize) =num_a + radius_core(i,k,j,isize) =dp_bc_a/2.0 + lwrefindx_core(i,k,j,isize,ns) =ref_index_bc + lwrefindx_shell(i,k,j,isize,ns) =ri_dum/vol_shell + endif + enddo ! ns longwave + +! refr=real(refindx(i,k,j,isize)) + + enddo !isize + enddo !i + enddo !j + enddo !k return end subroutine optical_prep_modal + ! !---------------------------------------------------------------------------------- ! 9/21/09, SAM a modification of optical_prep_modal subroutine for GOCART aerosol model - @@ -1226,12 +1585,12 @@ end subroutine optical_prep_modal ! and sulfate - just use dginia (meters) and sginia from module_data_sorgam. ! Not using accumulation mode from d'Almedia 1991 Table 7.1 and 7.2 global model ! -! This subroutine computes volume-averaged refractive index and wet radius needed +! This subroutine computes volume-averaged refractive index and wet radius needed ! by the mie calculations. Aerosol number is also passed into the mie calculations ! in terms of other units. ! subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, & - refindx, radius_wet, number_bin, & + refindx, radius_wet, number_bin, & radius_core, refindx_core, refindx_shell, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -1792,9 +2151,13 @@ subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, & end subroutine optical_prep_gocart +!below is the detail calculation for MIE code +!czhao + ! !*********************************************************************** ! <1.> subr mieaer +!czhao made changes for doing both shortwave and longwave optical properties ! Purpose: calculate aerosol optical depth, single scattering albedo, ! asymmetry factor, extinction, Legendre coefficients, and average aerosol ! size. parameterizes aerosol coefficients using chebychev polynomials @@ -1823,161 +2186,119 @@ end subroutine optical_prep_gocart !*********************************************************************** subroutine mieaer( & id, iclm, jclm, nbin_a, & - number_bin_col, radius_wet_col, refindx_col, & - dz, curr_secs, lpar, & - sizeaer,extaer,waer,gaer,tauaer,l2,l3,l4,l5,l6,l7,bscoef) ! added bscoef JCB 2007/02/01 + number_bin_col, radius_wet_col, swrefindx_col, & + lwrefindx_col, & + dz, curr_secs, kts,kte, & +! sizeaer,extaer,waer,gaer,tauaer,l2,l3,l4,l5,l6,l7,bscoef) ! added bscoef JCB 2007/02/01 + swsizeaer,swextaer,swwaer,swgaer,swtauaer,lwextaer,lwtauaer, & + l2,l3,l4,l5,l6,l7,swbscoef) ! added bscoef JCB 2007/02/01 ! USE module_data_mosaic_other, only : kmaxd ! USE module_data_mosaic_therm, ONLY: nbin_a_maxd USE module_peg_util, only: peg_error_fatal, peg_message IMPLICIT NONE -! subr arguments -!jdf - integer,parameter :: nspint = 4 ! Num of spectral intervals across - ! solar spectrum for FAST-J - integer, intent(in) :: lpar -!jdf real, dimension (nspint, kmaxd+1),intent(out) :: sizeaer,extaer,waer,gaer,tauaer -!jdf real, dimension (nspint, kmaxd+1),intent(out) :: l2,l3,l4,l5,l6,l7 -!jdf real, dimension (nspint, kmaxd+1),intent(out) :: bscoef !JCB 2007/02/01 - real, dimension (nspint, lpar ),intent(out) :: sizeaer,extaer,waer,gaer,tauaer - real, dimension (nspint, lpar ),intent(out) :: l2,l3,l4,l5,l6,l7 - real, dimension (nspint, lpar ),intent(out) :: bscoef !JCB 2007/02/01 - real, dimension (nspint),save :: wavmid !cm - data wavmid & - / 0.30e-4, 0.40e-4, 0.60e-4 ,0.999e-04 / -!jdf - integer, intent(in) :: id, iclm, jclm, nbin_a - real(kind=8), intent(in) :: curr_secs -!jdf real, intent(in), dimension(nbin_a, kmaxd) :: number_bin_col -!jdf real, intent(inout), dimension(nbin_a, kmaxd) :: radius_wet_col -!jdf complex, intent(in) :: refindx_col(nbin_a, kmaxd) - real, intent(in), dimension(nbin_a, lpar ) :: number_bin_col - real, intent(inout), dimension(nbin_a, lpar ) :: radius_wet_col - complex, intent(in) :: refindx_col(nbin_a, lpar ) - real, intent(in) :: dz(lpar) - -!local variables - real weighte, weights -! various bookeeping variables - integer ltype ! total number of indicies of refraction - parameter (ltype = 1) ! bracket refractive indices based on information from Rahul, 2002/11/07 - real x - real thesum ! for normalizing things - real sizem ! size in microns - integer, save :: kcallmieaer - data kcallmieaer / 0 / -! - integer m, j, nc, klevel - real pext ! parameterized specific extinction (cm2/g) - real pasm ! parameterized asymmetry factor - real ppmom2 ! 2 Lengendre expansion coefficient (numbered 0,1,2,...) - real ppmom3 ! 3 ... - real ppmom4 ! 4 ... - real ppmom5 ! 5 ... - real ppmom6 ! 6 ... - real ppmom7 ! 7 ... - real sback2 ! JCB 2007/02/01 sback*conjg(sback) - integer ns ! Spectral loop index - integer i ! Longitude loop index - integer k ! Level loop index - real pscat !scattering cross section - - integer prefr,prefi,nrefr,nrefi,nr,ni + integer,parameter :: nspint = 4 ! Num of spectral for FAST-J + integer, intent(in) :: kts,kte + integer, intent(in) :: id, iclm, jclm, nbin_a + real(kind=8), intent(in) :: curr_secs + + real, dimension (1:nspint,kts:kte),intent(out) :: swsizeaer,swextaer,swwaer,swgaer,swtauaer + real, dimension (1:nlwbands,kts:kte),intent(out) :: lwextaer,lwtauaer + real, dimension (1:nspint,kts:kte),intent(out) :: l2,l3,l4,l5,l6,l7 + real, dimension (1:nspint,kts:kte),intent(out) :: swbscoef !JCB 2007/02/01 + real, intent(in), dimension(1:nbin_a, kts:kte) :: number_bin_col + real, intent(inout), dimension(1:nbin_a,kts:kte) :: radius_wet_col + complex, intent(in),dimension(1:nbin_a,kts:kte,nspint) :: swrefindx_col + complex, intent(in),dimension(1:nbin_a,kts:kte,nlwbands) :: lwrefindx_col + real, intent(in),dimension(kts:kte) :: dz + + !fitting variables + integer ltype ! total number of indicies of refraction + parameter (ltype = 1) ! bracket refractive indices based on information from Rahul, 2002/11/07 + integer nrefr,nrefi,nr,ni save nrefr,nrefi - parameter (prefr=7,prefi=7) - complex*16 sforw,sback,tforw(2),tback(2) - integer numang,nmom,ipolzn,momdim real*8 pmom(0:7,1) - logical perfct,anyang,prnt(2) - logical, save :: first - data first/.true./ - integer, parameter :: nsiz=200,nlog=30,ncoef=50 -! + logical, save :: ini_fit ! initial mie fit only for the first time step + data ini_fit/.true./ + ! nsiz = number of wet particle sizes + integer, parameter :: nsiz=200,nlog=30 !,ncoef=5 real p2(nsiz),p3(nsiz),p4(nsiz),p5(nsiz) real p6(nsiz),p7(nsiz) -! + logical perfct,anyang,prnt(2) real*8 xmu(1) data xmu/1./,anyang/.false./ + data prnt/.false.,.false./ + integer numang,nmom,ipolzn,momdim data numang/0/ complex*16 s1(1),s2(1) real*8 mimcut data perfct/.false./,mimcut/0.0/ data nmom/7/,ipolzn/0/,momdim/7/ - data prnt/.false.,.false./ -! coefficients for parameterizing aerosol radiative properties -! in terms of refractive index and wet radius - real, save :: extp(ncoef,prefr,prefi,nspint) ! specific extinction - real, save :: albp(ncoef,prefr,prefi,nspint) ! single scat alb - real, save :: asmp(ncoef,prefr,prefi,nspint) ! asymmetry factor - real, save :: ascat(ncoef,prefr,prefi,nspint) ! scattering efficiency, JCB 2004/02/09 - real, save :: pmom2(ncoef,prefr,prefi,nspint) ! phase function expansion, #2 - real, save :: pmom3(ncoef,prefr,prefi,nspint) ! phase function expansion, #3 - real, save :: pmom4(ncoef,prefr,prefi,nspint) ! phase function expansion, #4 - real, save :: pmom5(ncoef,prefr,prefi,nspint) ! phase function expansion, #5 - real, save :: pmom6(ncoef,prefr,prefi,nspint) ! phase function expansion, #6 - real, save :: pmom7(ncoef,prefr,prefi,nspint) ! phase function expansion, #7 - real, save :: sback2p(ncoef,prefr,prefi,nspint) ! JCB 2007/02/01 - backscatter -!-------------- - real cext(ncoef),casm(ncoef),cpmom2(ncoef) - real cscat(ncoef) ! JCB 2004/02/09 - real cpmom3(ncoef),cpmom4(ncoef),cpmom5(ncoef) - real cpmom6(ncoef),cpmom7(ncoef) - real cpsback2p(ncoef) ! JCB 2007/02/09 - backscatter - integer itab,jtab - real ttab,utab - -! nsiz = number of wet particle sizes -! crefin = complex refractive index - integer n - real*8 thesize ! 2 pi radpart / waveleng = size parameter - real*8 qext(nsiz) ! array of extinction efficiencies - real*8 qsca(nsiz) ! array of scattering efficiencies - real*8 gqsc(nsiz) ! array of asymmetry factor * scattering efficiency - real asymm(nsiz) ! array of asymmetry factor - real scat(nsiz) ! JCB 2004/02/09 - real sb2(nsiz) ! JCB 2007/02/01 - 4*abs(sback)^2/(size parameter)^2 backscattering efficiency -! specabs = absorption coeff / unit dry mass -! specscat = scattering coeff / unit dry mass - complex*16 crefin,crefd,crefw - save crefw - real, save :: rmin,rmax ! min, max aerosol size bin - data rmin /0.005e-4/ ! rmin in cm. 5e-3 microns min allowable size - data rmax /50.e-4 / ! rmax in cm. 50 microns, big particle, max allowable size - - real bma,bpa - - real, save :: xrmin,xrmax,xr - real rs(nsiz) ! surface mode radius (cm) - real xrad ! normalized aerosol radius - real ch(ncoef) ! chebychev polynomial - - real, save :: rhoh2o ! density of liquid water (g/cm3) - data rhoh2o/1./ - - real refr ! real part of refractive index - real refi ! imaginary part of refractive index - real qextr4(nsiz) ! extinction, real*4 - - real refrmin ! minimum of real part of refractive index - real refrmax ! maximum of real part of refractive index - real refimin ! minimum of imag part of refractive index - real refimax ! maximum of imag part of refractive index - real drefr ! increment in real part of refractive index - real drefi ! increment in imag part of refractive index - real, save :: refrtab(prefr) ! table of real refractive indices for aerosols - real, save :: refitab(prefi) ! table of imag refractive indices for aerosols - complex specrefndx(ltype) ! refractivr indices - real pie,third - - integer irams, jrams -! diagnostic declarations - integer, save :: kcallmieaer2 - data kcallmieaer2 / 0 / - integer ibin - character*150 msg + integer n + real*8 thesize ! 2 pi radpart / waveleng = size parameter + real*8 qext(nsiz) ! array of extinction efficiencies + real*8 qsca(nsiz) ! array of scattering efficiencies + real*8 gqsc(nsiz) ! array of asymmetry factor * scattering efficiency + real qext4(nsiz) ! extinction, real*4 + real qsca4(nsiz) ! extinction, real*4 + real qabs4(nsiz) ! extinction, real*4 + real asymm(nsiz) ! array of asymmetry factor + real sb2(nsiz) ! JCB 2007/02/01 - 4*abs(sback)^2/(size parameter)^2 backscattering efficiency + complex*16 crefin,crefd,crefw + save crefw + real, save :: rmin,rmax ! min, max aerosol size bin + real bma,bpa + real refr ! real part of refractive index + real refi ! imaginary part of refractive index + real refrmin ! minimum of real part of refractive index + real refrmax ! maximum of real part of refractive index + real refimin ! minimum of imag part of refractive index + real refimax ! maximum of imag part of refractive index + real drefr ! increment in real part of refractive index + real drefi ! increment in imag part of refractive index + complex specrefndx(ltype) ! refractivr indices + integer, parameter :: naerosols=5 + + !parameterization variables + real weighte, weights,weighta + real x + real thesum ! for normalizing things + real sizem ! size in microns + integer m, j, nc, klevel + real pext ! parameterized specific extinction (cm2/g) + real pscat !scattering cross section + real pabs ! parameterized specific extinction (cm2/g) + real pasm ! parameterized asymmetry factor + real ppmom2 ! 2 Lengendre expansion coefficient (numbered 0,1,2,...) + real ppmom3 ! 3 ... + real ppmom4 ! 4 ... + real ppmom5 ! 5 ... + real ppmom6 ! 6 ... + real ppmom7 ! 7 ... + real sback2 ! JCB 2007/02/01 sback*conjg(sback) + real cext(ncoef),casm(ncoef),cpmom2(ncoef),cabs(ncoef) + real cscat(ncoef) ! JCB 2004/02/09 + real cpmom3(ncoef),cpmom4(ncoef),cpmom5(ncoef) + real cpmom6(ncoef),cpmom7(ncoef) + real cpsback2p(ncoef) ! JCB 2007/02/09 - backscatter + integer itab,jtab + real ttab,utab + real, save :: xrmin,xrmax,xr + real rs(nsiz) ! surface mode radius (cm) + real xrad ! normalized aerosol radius + real ch(ncoef) ! chebychev polynomial + + + !others + integer i,k,l,ns + real pie,third + integer ibin + character*150 msg + integer kcallmieaer,kcallmieaer2 + #if (defined(CHEM_DBG_I) && defined(CHEM_DBG_J) && defined(CHEM_DBG_K)) !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -1985,8 +2306,6 @@ subroutine mieaer( & !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc !ec run_out.25 has aerosol physical parameter info for bins 1-8 !ec and vertical cells 1 to kmaxd. -! ilaporte = 33 -! jlaporte = 34 if (iclm .eq. CHEM_DBG_I) then if (jclm .eq. CHEM_DBG_J) then ! initial entry @@ -2003,17 +2322,17 @@ subroutine mieaer( & ) end if !ec output for run_out.25 - do k = 1, lpar + do k = 1,kte do ibin = 1, nbin_a write(*, 9120) & curr_secs,iclm, jclm, k, ibin, & - refindx_col(ibin,k), & + swrefindx_col(ibin,k), & radius_wet_col(ibin,k), & number_bin_col(ibin,k) 9120 format( i7,3(2x,i4),2x,i4, 4x, 4(e14.6,2x)) end do end do - kcallmieaer2 = kcallmieaer2 + 1 + kcallmieaer2 = kcallmieaer2 + 1 end if end if !ec end print of aerosol physical parameter diagnostics @@ -2028,38 +2347,165 @@ subroutine mieaer( & ! pie=4.*atan(1.) third=1./3. - if(first)then - first=.false. + rmin=rmmin + rmax=rmmax + +!###################################################################### +!initial fitting to mie calculation based on Ghan et al. 2002 and 2007 +!##################################################################### + if(ini_fit)then + ini_fit=.false. + + !---------------------------------------------------------------------- + !shortwave + !--------------------------------------------------------------------- + ! wavelength loop + do 200 ns=1,nspint + ! parameterize aerosol radiative properties in terms of + ! relative humidity, surface mode wet radius, aerosol species, + ! and wavelength + ! first find min,max of real and imaginary parts of refractive index + ! real and imaginary parts of water refractive index + + !crefw=cmplx(1.33,0.0) + crefwsw(ns)=cmplx(refrwsw(ns),refiwsw(ns)) + refrmin=real(crefwsw(ns)) + refrmax=real(crefwsw(ns)) + !change imaginary part of the refractive index from positive to negative + refimin=-imag(crefwsw(ns)) + refimax=-imag(crefwsw(ns)) + !specrefndx(1)=cmplx(1.85,-0.71) ! max values from Bond and Bergstrom +! do i=1,ltype ! loop over all possible refractive indices +! refrmin=amin1(refrmin,real(specrefndx(ltype))) +! refrmax=amax1(refrmax,real(specrefndx(ltype))) +! refimin=amin1(refimin,aimag(specrefndx(ltype))) +! refimax=amax1(refimax,aimag(specrefndx(ltype))) +! enddo +! aerosol species loop (dust, BC, OC, Sea Salt, and Sulfate) + + do l=1,naerosols + if (l==1) refr=refrsw_dust(ns) + if (l==1) refi=-refisw_dust(ns) + if (l==2) refr=refrsw_bc(ns) + if (l==2) refi=-refisw_bc(ns) + if (l==3) refr=refrsw_oc(ns) + if (l==3) refi=-refisw_oc(ns) + if (l==4) refr=refrsw_seas(ns) + if (l==4) refi=-refisw_seas(ns) + if (l==5) refr=refrsw_sulf(ns) + if (l==5) refi=-refisw_sulf(ns) + refrmin=min(refrmin,refr) + refrmax=max(refrmax,refr) + refimin=min(refimin,refi) + refimax=max(refimax,refi) + enddo -! parameterize aerosol radiative properties in terms of -! relative humidity, surface mode wet radius, aerosol species, -! and wavelength + drefr=(refrmax-refrmin) + if(drefr.gt.1.e-4)then + nrefr=prefr + drefr=drefr/(nrefr-1) + else + nrefr=1 + endif -! first find min,max of real and imaginary parts of refractive index + drefi=(refimax-refimin) + if(drefi.gt.1.e-4)then + nrefi=prefi + drefi=drefi/(nrefi-1) + else + nrefi=1 + endif -! real and imaginary parts of water refractive index + bma=0.5*alog(rmax/rmin) ! JCB + bpa=0.5*alog(rmax*rmin) ! JCB - crefw=cmplx(1.33,0.0) - refrmin=real(crefw) - refrmax=real(crefw) -! change Rahul's imaginary part of the refractive index from positive to negative - refimin=-imag(crefw) - refimax=-imag(crefw) + do 120 nr=1,nrefr + do 120 ni=1,nrefi -! aerosol mode loop - specrefndx(1)=cmplx(1.85,-0.71) ! max values from Bond and Bergstrom -! - - do i=1,ltype ! loop over all possible refractive indices + refrtabsw(nr,ns)=refrmin+(nr-1)*drefr + refitabsw(ni,ns)=refimin/0.2*(0.2**real(ni)) !slightly different from Ghan and Zaveri + if(ni.eq.nrefi) refitabsw(ni,ns)=-1.0e-20 ! JCB change + crefd=cmplx(refrtabsw(nr,ns),refitabsw(ni,ns)) -! real and imaginary parts of aerosol refractive index +! mie calculations of optical efficiencies + do n=1,nsiz + xr=cos(pie*(float(n)-0.5)/float(nsiz)) + rs(n)=exp(xr*bma+bpa) - refrmin=amin1(refrmin,real(specrefndx(ltype))) - refrmax=amax1(refrmax,real(specrefndx(ltype))) - refimin=amin1(refimin,aimag(specrefndx(ltype))) - refimax=amax1(refimax,aimag(specrefndx(ltype))) +! size parameter and weighted refractive index + thesize=2.*pie*rs(n)/wavmidsw(ns) + thesize=min(thesize,10000.d0) - enddo + call miev0(thesize,crefd,perfct,mimcut,anyang, & + numang,xmu,nmom,ipolzn,momdim,prnt, & + qext(n),qsca(n),gqsc(n),pmom,sforw,sback,s1, & + s2,tforw,tback ) + qext4(n)=qext(n) + qsca4(n)=min(qsca(n),qext(n)) + qabs4(n)=qext4(n)-qsca4(n) + qabs4(n)=max(qabs4(n),1.e-20) ! avoid 0 + asymm(n)=gqsc(n)/qsca4(n) ! assume always greater than zero +! coefficients of phase function expansion; note modification by JCB of miev0 coefficients + p2(n)=pmom(2,1)/pmom(0,1)*5.0 + p3(n)=pmom(3,1)/pmom(0,1)*7.0 + p4(n)=pmom(4,1)/pmom(0,1)*9.0 + p5(n)=pmom(5,1)/pmom(0,1)*11.0 + p6(n)=pmom(6,1)/pmom(0,1)*13.0 + p7(n)=pmom(7,1)/pmom(0,1)*15.0 +! backscattering efficiency, Bohren and Huffman, page 122 +! as stated by Bohren and Huffman, this is 4*pie times what is should be +! may need to be smoothed - a very rough function - for the time being we won't apply smoothing +! and let the integration over the size distribution be the smoothing + sb2(n)=4.0*sback*dconjg(sback)/(thesize*thesize) ! JCB 2007/02/01 + enddo +! + call fitcurv(rs,qext4,extpsw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv(rs,qabs4,abspsw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv(rs,qsca4,ascatpsw(1,nr,ni,ns),ncoef,nsiz) ! scattering efficiency + call fitcurv(rs,asymm,asmpsw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv(rs,sb2,sbackpsw(1,nr,ni,ns),ncoef,nsiz) ! backscattering efficiency + call fitcurv_nolog(rs,p2,pmom2psw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv_nolog(rs,p3,pmom3psw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv_nolog(rs,p4,pmom4psw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv_nolog(rs,p5,pmom5psw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv_nolog(rs,p6,pmom6psw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv_nolog(rs,p7,pmom7psw(1,nr,ni,ns),ncoef,nsiz) + + 120 continue + 200 continue ! ns for shortwave + + + !---------------------------------------------------------------------- + !longwave + !--------------------------------------------------------------------- + ! wavelength loop + do 201 ns=1,nlwbands + !wavelength for longwave 1/cm --> cm + wavmidlw(ns) = 0.5*(1./wavenumber1_longwave(ns) + 1./wavenumber2_longwave(ns)) + + crefwlw(ns)=cmplx(refrwlw(ns),refiwlw(ns)) + refrmin=real(crefwlw(ns)) + refrmax=real(crefwlw(ns)) + refimin=-imag(crefwlw(ns)) + refimax=-imag(crefwlw(ns)) + + !aerosol species loop (dust, BC, OC, Sea Salt, and Sulfate) + do l=1,naerosols + if (l==1) refr=refrlw_dust(ns) + if (l==1) refi=-refilw_dust(ns) + if (l==2) refr=refrlw_bc(ns) + if (l==2) refi=-refilw_bc(ns) + if (l==3) refr=refrlw_oc(ns) + if (l==3) refi=-refilw_oc(ns) + if (l==4) refr=refrlw_seas(ns) + if (l==4) refi=-refilw_seas(ns) + if (l==5) refr=refrlw_sulf(ns) + if (l==5) refi=-refilw_sulf(ns) + refrmin=min(refrmin,refr) + refrmax=max(refrmax,refr) + refimin=min(refimin,refi) + refimax=max(refimax,refi) + enddo drefr=(refrmax-refrmin) if(drefr.gt.1.e-4)then @@ -2077,204 +2523,178 @@ subroutine mieaer( & nrefi=1 endif + bma=0.5*alog(rmax/rmin) ! JCB + bpa=0.5*alog(rmax*rmin) ! JCB -! - bma=0.5*alog(rmax/rmin) ! JCB - bpa=0.5*alog(rmax*rmin) ! JCB - xrmin=alog(rmin) - xrmax=alog(rmax) - -! wavelength loop - - do 200 ns=1,nspint + do 121 nr=1,nrefr + do 121 ni=1,nrefi -! calibrate parameterization with range of refractive indices - - do 120 nr=1,nrefr - do 120 ni=1,nrefi - - refrtab(nr)=refrmin+(nr-1)*drefr -! JCB, Feb. 20, 2008: here we fix a conceptual problem associated with -! the old Ghan code. See Steve Ghan's updated method; Ghan and Zaveri, -! Parameterization of optical properties for hydrated internally mixed -! aerosol, J. Geophys. Res., 112, D10201, doi:10.1029/2006JD007927, 2007. -! JCB refitab(ni)=refimin+(ni-1)*drefi, old code -! JCB, note that the complex part of the refractive index is < 0 - refitab(ni)=refimin/0.2*(0.2**real(ni)) ! JCB change, slightly different parameters than Ghan and Zaveri - if(ni.eq.nrefi)refitab(nrefi)=0.0 ! JCB change - crefd=cmplx(refrtab(nr),refitab(ni)) + refrtablw(nr,ns)=refrmin+(nr-1)*drefr + refitablw(ni,ns)=refimin/0.2*(0.2**real(ni)) !slightly different from Ghan and Zaveri + if(ni.eq.nrefi) refitablw(nrefi,ns)=-1.0e-21 ! JCB change + crefd=cmplx(refrtablw(nr,ns),refitablw(ni,ns)) ! mie calculations of optical efficiencies - do n=1,nsiz - xr=cos(pie*(float(n)-0.5)/float(nsiz)) - rs(n)=exp(xr*bma+bpa) - + xr=cos(pie*(float(n)-0.5)/float(nsiz)) + rs(n)=exp(xr*bma+bpa) -! size parameter and weighted refractive index - - thesize=2.*pie*rs(n)/wavmid(ns) - thesize=min(thesize,10000.d0) +! size parameter and weighted refractive index + thesize=2.*pie*rs(n)/wavmidlw(ns) + thesize=min(thesize,10000.d0) call miev0(thesize,crefd,perfct,mimcut,anyang, & numang,xmu,nmom,ipolzn,momdim,prnt, & qext(n),qsca(n),gqsc(n),pmom,sforw,sback,s1, & s2,tforw,tback ) - qextr4(n)=qext(n) -! qabs(n)=qext(n)-qsca(n) ! not necessary anymore JCB 2004/02/09 - scat(n)=qsca(n) ! JCB 2004/02/09 - asymm(n)=gqsc(n)/qsca(n) ! assume always greater than zero -! coefficients of phase function expansion; note modification by JCB of miev0 coefficients - p2(n)=pmom(2,1)/pmom(0,1)*5.0 - p3(n)=pmom(3,1)/pmom(0,1)*7.0 - p4(n)=pmom(4,1)/pmom(0,1)*9.0 - p5(n)=pmom(5,1)/pmom(0,1)*11.0 - p6(n)=pmom(6,1)/pmom(0,1)*13.0 - p7(n)=pmom(7,1)/pmom(0,1)*15.0 -! backscattering efficiency, Bohren and Huffman, page 122 -! as stated by Bohren and Huffman, this is 4*pie times what is should be -! may need to be smoothed - a very rough function - for the time being we won't apply smoothing -! and let the integration over the size distribution be the smoothing - sb2(n)=4.0*sback*dconjg(sback)/(thesize*thesize) ! JCB 2007/02/01 - enddo - 100 continue + qext4(n)=qext(n) + qext4(n)=max(qext4(n),1.e-20) ! avoid 0 + qsca4(n)=min(qsca(n),qext(n)) + qsca4(n)=max(qsca4(n),1.e-20) ! avoid 0 + qabs4(n)=qext4(n)-qsca4(n) + qabs4(n)=max(qabs4(n),1.e-20) ! avoid 0 + asymm(n)=gqsc(n)/qsca4(n) ! assume always greater than zero + enddo ! - call fitcurv(rs,qextr4,extp(1,nr,ni,ns),ncoef,nsiz) - call fitcurv(rs,scat,ascat(1,nr,ni,ns),ncoef,nsiz) ! JCB 2004/02/07 - scattering efficiency - call fitcurv(rs,asymm,asmp(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p2,pmom2(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p3,pmom3(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p4,pmom4(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p5,pmom5(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p6,pmom6(1,nr,ni,ns),ncoef,nsiz) - call fitcurv_nolog(rs,p7,pmom7(1,nr,ni,ns),ncoef,nsiz) - call fitcurv(rs,sb2,sback2p(1,nr,ni,ns),ncoef,nsiz) ! JCB 2007/02/01 - backscattering efficiency + !if (nr==1.and.ni==1) then + !endif + call fitcurv(rs,qext4,extplw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv(rs,qabs4,absplw(1,nr,ni,ns),ncoef,nsiz) + call fitcurv(rs,qsca4,ascatplw(1,nr,ni,ns),ncoef,nsiz) ! scattering efficiency + call fitcurv(rs,asymm,asmplw(1,nr,ni,ns),ncoef,nsiz) + 121 continue + 201 continue ! ns for longwave - 120 continue - 200 continue + endif !ini_fit + + + xrmin=alog(rmin) + xrmax=alog(rmax) + +!###################################################################### +!parameterization of mie calculation for shortwave +!##################################################################### - endif ! begin level loop - do 2000 klevel=1,lpar + do 2000 klevel=1,kte ! sum densities for normalization - thesum=0.0 - do m=1,nbin_a - thesum=thesum+number_bin_col(m,klevel) - enddo -! Begin spectral loop - do 1000 ns=1,nspint + thesum=0.0 + do m=1,nbin_a + thesum=thesum+number_bin_col(m,klevel) + enddo +! Begin shortwave spectral loop + do 1000 ns=1,nswbands ! aerosol optical properties - - tauaer(ns,klevel)=0. - waer(ns,klevel)=0. - gaer(ns,klevel)=0. - sizeaer(ns,klevel)=0.0 - extaer(ns,klevel)=0.0 - l2(ns,klevel)=0.0 - l3(ns,klevel)=0.0 - l4(ns,klevel)=0.0 - l5(ns,klevel)=0.0 - l6(ns,klevel)=0.0 - l7(ns,klevel)=0.0 - bscoef(ns,klevel)=0.0 ! JCB 2007/02/01 - backscattering coefficient - if(thesum.le.1e-21)goto 1000 ! set everything = 0 if no aerosol !wig changed 0.0 to 1e-21, 31-Oct-2005 + swtauaer(ns,klevel)=0. + swwaer(ns,klevel)=0. + swgaer(ns,klevel)=0. + swsizeaer(ns,klevel)=0.0 + swextaer(ns,klevel)=0.0 + l2(ns,klevel)=0.0 + l3(ns,klevel)=0.0 + l4(ns,klevel)=0.0 + l5(ns,klevel)=0.0 + l6(ns,klevel)=0.0 + l7(ns,klevel)=0.0 + swbscoef(ns,klevel)=0.0 ! JCB 2007/02/01 - backscattering coefficient + if(thesum.le.1e-21)goto 1000 ! set everything = 0 if no aerosol !wig changed 0.0 to 1e-21, 31-Oct-2005 ! loop over the bins do m=1,nbin_a ! nbin_a is number of bins -! check to see if there's any aerosol -!jdf if(number_bin_col(m,klevel).le.1e-21)goto 70 ! no aerosol !wig changed 0.0 to 1e-21, 31-Oct-2005 ! here's the size - sizem=radius_wet_col(m,klevel) ! radius in cm -! check limits of particle size -! rce 2004-dec-07 - use klevel in write statements - if(radius_wet_col(m,klevel).le.rmin)then - radius_wet_col(m,klevel)=rmin - write( msg, '(a, 5i4,1x, e11.4)' ) & - 'mieaer: radius_wet set to rmin,' // & - 'id,i,j,k,m,rm(m,k)', id, iclm, jclm, klevel, m, radius_wet_col(m,klevel) - call peg_message( lunerr, msg ) -! write(6,'('' particle size too small '')') - endif -! - if(radius_wet_col(m,klevel).gt.rmax)then - write( msg, '(a, 5i4,1x, e11.4)' ) & + sizem=radius_wet_col(m,klevel) ! radius in cm + + !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + !ec diagnostics + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + ! check limits of particle size + ! rce 2004-dec-07 - use klevel in write statements + if(radius_wet_col(m,klevel).le.rmin)then + radius_wet_col(m,klevel)=rmin + write( msg, '(a, 5i4,1x, e11.4)' ) & + 'mieaer: radius_wet set to rmin,' // & + 'id,i,j,k,m,rm(m,k)', id, iclm, jclm, klevel, m, radius_wet_col(m,klevel) + call peg_message( lunerr, msg ) + endif + if(radius_wet_col(m,klevel).gt.rmax)then + radius_wet_col(m,klevel)=rmax + !only print when the number is significant + if (number_bin_col(m,klevel).ge.1.e-10) then + write( msg, '(a, 5i4,1x, 2e11.4)' ) & 'mieaer: radius_wet set to rmax,' // & - 'id,i,j,k,m,rm(m,k)', & - id, iclm, jclm, klevel, m, radius_wet_col(m,klevel) - call peg_message( lunerr, msg ) - radius_wet_col(m,klevel)=rmax -! write(6,'('' particle size too large '')') - endif -! - x=alog(radius_wet_col(m,klevel)) ! radius in cm -! - crefin=refindx_col(m,klevel) - refr=real(crefin) -! change Rahul's imaginary part of the index of refraction from positive to negative - refi=-imag(crefin) -! - xrad=x - - thesize=2.0*pie*exp(x)/wavmid(ns) -! normalize size parameter - xrad=(2*xrad-xrmax-xrmin)/(xrmax-xrmin) -! retain this diagnostic code - if(abs(refr).gt.10.0.or.abs(refr).le.0.001)then + 'id,i,j,k,m,rm(m,k),number', & + id, iclm, jclm, klevel, m, radius_wet_col(m,klevel),number_bin_col(m,klevel) + call peg_message( lunerr, msg ) + endif + endif + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + + x=alog(radius_wet_col(m,klevel)) ! radius in cm + crefin=swrefindx_col(m,klevel,ns) + refr=real(crefin) + refi=-imag(crefin) + xrad=x + thesize=2.0*pie*exp(x)/wavmidsw(ns) + ! normalize size parameter + xrad=(2*xrad-xrmax-xrmin)/(xrmax-xrmin) + + !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + !ec diagnostics + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + ! retain this diagnostic code + if(abs(refr).gt.10.0.or.abs(refr).le.0.001)then write ( msg, '(a,1x, e14.5)' ) & 'mieaer /refr/ outside range 1e-3 - 10 ' // & 'refr= ', refr -! print *,'refr=',refr - call peg_error_fatal( lunerr, msg ) - - endif - if(abs(refi).gt.10.)then + call peg_error_fatal( lunerr, msg ) + endif + if(abs(refi).gt.10.)then write ( msg, '(a,1x, e14.5)' ) & 'mieaer /refi/ >10 ' // & 'refi', refi -! print *,'refi=',refi - call peg_error_fatal( lunerr, msg ) - endif + call peg_error_fatal( lunerr, msg ) + endif + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ! interpolate coefficients linear in refractive index ! first call calcs itab,jtab,ttab,utab itab=0 - call binterp(extp(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(extpsw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cext) ! JCB 2004/02/09 -- new code for scattering cross section - call binterp(ascat(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(ascatpsw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cscat) - call binterp(asmp(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(asmpsw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,casm) - call binterp(pmom2(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom2psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom2) - call binterp(pmom3(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom3psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom3) - call binterp(pmom4(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom4psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom4) - call binterp(pmom5(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom5psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom5) - call binterp(pmom6(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom6psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom6) - call binterp(pmom7(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(pmom7psw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpmom7) - call binterp(sback2p(1,1,1,ns),ncoef,nrefr,nrefi, & - refr,refi,refrtab,refitab,itab,jtab, & + call binterp(sbackpsw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtabsw(1,ns),refitabsw(1,ns),itab,jtab, & ttab,utab,cpsback2p) ! chebyshev polynomials - ch(1)=1. ch(2)=xrad do nc=3,ncoef @@ -2282,12 +2702,12 @@ subroutine mieaer( & enddo ! parameterized optical properties - pext=0.5*cext(1) - do nc=2,ncoef - pext=pext+ch(nc)*cext(nc) - enddo - pext=exp(pext) - + pext=0.5*cext(1) + do nc=2,ncoef + pext=pext+ch(nc)*cext(nc) + enddo + pext=exp(pext) + ! JCB 2004/02/09 -- for scattering efficiency pscat=0.5*cscat(1) do nc=2,ncoef @@ -2305,116 +2725,115 @@ subroutine mieaer( & do nc=2,ncoef ppmom2=ppmom2+ch(nc)*cpmom2(nc) enddo - if(ppmom2.le.0.0)ppmom2=0.0 + if(ppmom2.le.0.0)ppmom2=0.0 ! ppmom3=0.5*cpmom3(1) do nc=2,ncoef ppmom3=ppmom3+ch(nc)*cpmom3(nc) enddo -! ppmom3=exp(ppmom3) ! no exponentiation required - if(ppmom3.le.0.0)ppmom3=0.0 + if(ppmom3.le.0.0)ppmom3=0.0 ! ppmom4=0.5*cpmom4(1) do nc=2,ncoef ppmom4=ppmom4+ch(nc)*cpmom4(nc) enddo - if(ppmom4.le.0.0.or.sizem.le.0.03e-04)ppmom4=0.0 + if(ppmom4.le.0.0.or.sizem.le.0.03e-04)ppmom4=0.0 ! ppmom5=0.5*cpmom5(1) do nc=2,ncoef ppmom5=ppmom5+ch(nc)*cpmom5(nc) enddo - if(ppmom5.le.0.0.or.sizem.le.0.03e-04)ppmom5=0.0 + if(ppmom5.le.0.0.or.sizem.le.0.03e-04)ppmom5=0.0 ! ppmom6=0.5*cpmom6(1) do nc=2,ncoef ppmom6=ppmom6+ch(nc)*cpmom6(nc) enddo - if(ppmom6.le.0.0.or.sizem.le.0.03e-04)ppmom6=0.0 + if(ppmom6.le.0.0.or.sizem.le.0.03e-04)ppmom6=0.0 ! ppmom7=0.5*cpmom7(1) do nc=2,ncoef ppmom7=ppmom7+ch(nc)*cpmom7(nc) enddo - if(ppmom7.le.0.0.or.sizem.le.0.03e-04)ppmom7=0.0 + if(ppmom7.le.0.0.or.sizem.le.0.03e-04)ppmom7=0.0 ! sback2=0.5*cpsback2p(1) ! JCB 2007/02/01 - backscattering efficiency do nc=2,ncoef sback2=sback2+ch(nc)*cpsback2p(nc) enddo sback2=exp(sback2) - if(sback2.le.0.0)sback2=0.0 + if(sback2.le.0.0)sback2=0.0 ! ! ! weights: - weighte=pext*pie*exp(x)**2 ! JCB, extinction cross section - weights=pscat*pie*exp(x)**2 ! JCB, scattering cross section - tauaer(ns,klevel)=tauaer(ns,klevel)+weighte*number_bin_col(m,klevel) ! must be multiplied by deltaZ -! extaer(ns,klevel)=extaer(ns,klevel)+pext*number_bin_col(m,klevel) ! not the true extinction, JCB 2007/02/01 - sizeaer(ns,klevel)=sizeaer(ns,klevel)+exp(x)*10000.0* & - number_bin_col(m,klevel) - waer(ns,klevel)=waer(ns,klevel)+weights*number_bin_col(m,klevel) !JCB - gaer(ns,klevel)=gaer(ns,klevel)+pasm*weights* & - number_bin_col(m,klevel) !JCB + pscat=min(pscat,pext) !czhao + weighte=pext*pie*exp(x)**2 ! JCB, extinction cross section + weights=pscat*pie*exp(x)**2 ! JCB, scattering cross section + swtauaer(ns,klevel)=swtauaer(ns,klevel)+weighte*number_bin_col(m,klevel) ! must be multiplied by deltaZ +! if (iclm==30.and.jclm==49.and.klevel==2.and.m==5) then +! write(0,*) 'czhao check swtauaer calculation in MIE',ns,m,weighte,number_bin_col(m,klevel),swtauaer(ns,klevel)*dz(klevel)*100 +! print*, 'czhao check swtauaer calculation in MIE',ns,m,weighte,number_bin_col(m,klevel),swtauaer(ns,klevel)*dz(klevel)*100 +! endif + swsizeaer(ns,klevel)=swsizeaer(ns,klevel)+exp(x)*10000.0* & + number_bin_col(m,klevel) + swwaer(ns,klevel)=swwaer(ns,klevel)+weights*number_bin_col(m,klevel) !JCB + swgaer(ns,klevel)=swgaer(ns,klevel)+pasm*weights*number_bin_col(m,klevel) !JCB ! need weighting by scattering cross section ? JCB 2004/02/09 - l2(ns,klevel)=l2(ns,klevel)+weights*ppmom2*number_bin_col(m,klevel) - l3(ns,klevel)=l3(ns,klevel)+weights*ppmom3*number_bin_col(m,klevel) - l4(ns,klevel)=l4(ns,klevel)+weights*ppmom4*number_bin_col(m,klevel) - l5(ns,klevel)=l5(ns,klevel)+weights*ppmom5*number_bin_col(m,klevel) - l6(ns,klevel)=l6(ns,klevel)+weights*ppmom6*number_bin_col(m,klevel) - l7(ns,klevel)=l7(ns,klevel)+weights*ppmom7*number_bin_col(m,klevel) + l2(ns,klevel)=l2(ns,klevel)+weights*ppmom2*number_bin_col(m,klevel) + l3(ns,klevel)=l3(ns,klevel)+weights*ppmom3*number_bin_col(m,klevel) + l4(ns,klevel)=l4(ns,klevel)+weights*ppmom4*number_bin_col(m,klevel) + l5(ns,klevel)=l5(ns,klevel)+weights*ppmom5*number_bin_col(m,klevel) + l6(ns,klevel)=l6(ns,klevel)+weights*ppmom6*number_bin_col(m,klevel) + l7(ns,klevel)=l7(ns,klevel)+weights*ppmom7*number_bin_col(m,klevel) ! convert backscattering efficiency to backscattering coefficient, units (cm)^-1 - bscoef(ns,klevel)=bscoef(ns,klevel)+pie*exp(x)**2*sback2*number_bin_col(m,klevel) ! JCB 2007/02/01 - backscatter coefficient, + swbscoef(ns,klevel)=swbscoef(ns,klevel)+pie*exp(x)**2*sback2*number_bin_col(m,klevel)! backscatter end do ! end of nbin_a loop + ! take averages - weighted by cross section - new code JCB 2004/02/09 - sizeaer(ns,klevel)=sizeaer(ns,klevel)/thesum - gaer(ns,klevel)=gaer(ns,klevel)/waer(ns,klevel) ! JCB removed *3 factor 2/9/2004 + swsizeaer(ns,klevel)=swsizeaer(ns,klevel)/thesum + swgaer(ns,klevel)=swgaer(ns,klevel)/swwaer(ns,klevel) ! JCB removed *3 factor 2/9/2004 ! because factor is applied in subroutine opmie, file zz01fastj_mod.f - l2(ns,klevel)=l2(ns,klevel)/waer(ns,klevel) - l3(ns,klevel)=l3(ns,klevel)/waer(ns,klevel) - l4(ns,klevel)=l4(ns,klevel)/waer(ns,klevel) - l5(ns,klevel)=l5(ns,klevel)/waer(ns,klevel) - l6(ns,klevel)=l6(ns,klevel)/waer(ns,klevel) - l7(ns,klevel)=l7(ns,klevel)/waer(ns,klevel) + l2(ns,klevel)=l2(ns,klevel)/swwaer(ns,klevel) + l3(ns,klevel)=l3(ns,klevel)/swwaer(ns,klevel) + l4(ns,klevel)=l4(ns,klevel)/swwaer(ns,klevel) + l5(ns,klevel)=l5(ns,klevel)/swwaer(ns,klevel) + l6(ns,klevel)=l6(ns,klevel)/swwaer(ns,klevel) + l7(ns,klevel)=l7(ns,klevel)/swwaer(ns,klevel) ! backscatter coef, divide by 4*Pie to get units of (km*ster)^-1 JCB 2007/02/01 - bscoef(ns,klevel)=bscoef(ns,klevel)*1.0e5 ! JCB 2007/02/01 - units are now (km)^-1 - extaer(ns,klevel)=tauaer(ns,klevel)*1.0e5 ! JCB 2007/02/01 - now true extincion, units (km)^-1 -! this must be last!! JCB 2007/02/01 - waer(ns,klevel)=waer(ns,klevel)/tauaer(ns,klevel) ! JCB + swbscoef(ns,klevel)=swbscoef(ns,klevel)*1.0e5 ! units are now (km)^-1 + swextaer(ns,klevel)=swtauaer(ns,klevel)*1.0e5 ! now true extincion, units (km)^-1 +! this must be last!! + swwaer(ns,klevel)=swwaer(ns,klevel)/swtauaer(ns,klevel) ! JCB - 70 continue ! bail out if no aerosol;go on to next wavelength bin - - 1000 continue ! end of wavelength loop +!70 continue ! bail out if no aerosol;go on to next wavelength bin +1000 continue ! end of wavelength loop 2000 continue ! end of klevel loop ! ! before returning, multiply tauaer by depth of individual cells. ! tauaer is in cm-1, dz in m; multiply dz by 100 to convert from m to cm. - do ns = 1, nspint - do klevel = 1, lpar - tauaer(ns,klevel) = tauaer(ns,klevel) * dz(klevel)* 100. + do ns = 1, nswbands + do klevel = 1, kte + swtauaer(ns,klevel) = swtauaer(ns,klevel) * dz(klevel)* 100. end do - end do + end do #if (defined(CHEM_DBG_I) && defined(CHEM_DBG_J) && defined(CHEM_DBG_K)) !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc !ec fastj diagnostics !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc -!ec run_out.30 has aerosol optical info for cells 1 to kmaxd. -! ilaporte = 33 -! jlaporte = 34 - if (iclm .eq. CHEM_DBG_I) then - if (jclm .eq. CHEM_DBG_J) then + if (iclm .eq. CHEM_DBG_I) then + if (jclm .eq. CHEM_DBG_J) then ! initial entry - if (kcallmieaer .eq. 0) then - write(*,909) CHEM_DBG_I, CHEM_DBG_J - 909 format( ' for cell i = ', i3, ' j = ', i3) + if (kcallmieaer .eq. 0) then + write(*,909) CHEM_DBG_I, CHEM_DBG_J + 909 format( ' for cell i = ', i3, ' j = ', i3) write(*,910) 910 format( & 'curr_secs', 3x, 'i', 3x, 'j', 3x,'k', 3x, & - 'dzmfastj', 8x, & + 'dzmfastj', 8x, & 'tauaer(1,k)',1x, 'tauaer(2,k)',1x,'tauaer(3,k)',3x, & 'tauaer(4,k)',5x, & 'waer(1,k)', 7x, 'waer(2,k)', 7x,'waer(3,k)', 7x, & @@ -2425,29 +2844,126 @@ subroutine mieaer( & 'extaer(4,k)',5x, & 'sizeaer(1,k)',4x, 'sizeaer(2,k)',4x,'sizeaer(3,k)',4x, & 'sizeaer(4,k)' ) - end if + end if !ec output for run_out.30 - do k = 1, lpar + do k = 1,kte write(*, 912) & curr_secs,iclm, jclm, k, & dz(k) , & - (tauaer(n,k), n=1,4), & - (waer(n,k), n=1,4), & - (gaer(n,k), n=1,4), & - (extaer(n,k), n=1,4), & - (sizeaer(n,k), n=1,4) + (swtauaer(n,k), n=1,4), & + (swwaer(n,k), n=1,4), & + (swgaer(n,k), n=1,4), & + (swextaer(n,k), n=1,4), & + (swsizeaer(n,k), n=1,4) 912 format( i7,3(2x,i4),2x,21(e14.6,2x)) end do - kcallmieaer = kcallmieaer + 1 + kcallmieaer = kcallmieaer + 1 end if end if !ec end print of fastj diagnostics !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc #endif + +!###################################################################### +!parameterization of mie calculation for longwave +!##################################################################### + +! begin level loop + do 2001 klevel=1,kte +! sum densities for normalization + thesum=0.0 + do m=1,nbin_a + thesum=thesum+number_bin_col(m,klevel) + enddo +! Begin longwave spectral loop + do 1001 ns=1,nlwbands + +! aerosol optical properties + lwtauaer(ns,klevel)=0. + lwextaer(ns,klevel)=0.0 + if(thesum.le.1e-21)goto 1001 ! set everything = 0 if no aerosol !wig changed 0.0 to 1e-21, 31-Oct-2005 + +! loop over the bins + do m=1,nbin_a ! nbin_a is number of bins +! here's the size + sizem=radius_wet_col(m,klevel) ! radius in cm + x=alog(radius_wet_col(m,klevel)) ! radius in cm + crefin=lwrefindx_col(m,klevel,ns) + refr=real(crefin) + refi=-imag(crefin) + xrad=x + thesize=2.0*pie*exp(x)/wavmidlw(ns) + ! normalize size parameter + xrad=(2*xrad-xrmax-xrmin)/(xrmax-xrmin) + + !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + !ec diagnostics + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + ! retain this diagnostic code + if(abs(refr).gt.10.0.or.abs(refr).le.0.001)then + write ( msg, '(a,1x, e14.5)' ) & + 'mieaer /refr/ outside range 1e-3 - 10 ' // & + 'refr= ', refr + call peg_error_fatal( lunerr, msg ) + endif + if(abs(refi).gt.10.)then + write ( msg, '(a,1x, e14.5)' ) & + 'mieaer /refi/ >10 ' // & + 'refi', refi + call peg_error_fatal( lunerr, msg ) + endif + !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + +! interpolate coefficients linear in refractive index +! first call calcs itab,jtab,ttab,utab + itab=0 + call binterp(absplw(1,1,1,ns),ncoef,nrefr,nrefi, & + refr,refi,refrtablw(1,ns),refitablw(1,ns),itab,jtab, & + ttab,utab,cabs) + +! chebyshev polynomials + ch(1)=1. + ch(2)=xrad + do nc=3,ncoef + ch(nc)=2.*xrad*ch(nc-1)-ch(nc-2) + enddo +! parameterized optical properties + pabs=0.5*cabs(1) + do nc=2,ncoef + pabs=pabs+ch(nc)*cabs(nc) + enddo + pabs=exp(pabs) + +! +! weights: + weighta=pabs*pie*exp(x)**2 ! JCB, extinction cross section + !weighta: cm2 and number_bin_col #/cm3 -> /cm + lwtauaer(ns,klevel)=lwtauaer(ns,klevel)+weighta*number_bin_col(m,klevel) ! must be multiplied by deltaZ + + end do ! end of nbin_a loop + +! take averages - weighted by cross section - new code JCB 2004/02/09 + lwextaer(ns,klevel)=lwtauaer(ns,klevel)*1.0e5 ! now true extincion, units (km)^-1 + +1001 continue ! end of wavelength loop + +2001 continue ! end of klevel loop +! +! before returning, multiply tauaer by depth of individual cells. +! tauaer is in cm-1, dz in m; multiply dz by 100 to convert from m to cm. + do ns = 1, nlwbands + do klevel = 1, kte + lwtauaer(ns,klevel) = lwtauaer(ns,klevel) * dz(klevel)* 100. + end do + end do + return end subroutine mieaer !**************************************************************** + +!**************************************************************** + subroutine fitcurv(rs,yin,coef,ncoef,maxm) ! fit y(x) using Chebychev polynomials @@ -4272,20 +4788,21 @@ subroutine sect02(dgnum_um,sigmag,drydens,iflag,duma,nbin,dlo_um,dhi_um, & xntot = duma else xmtot = duma + xntot = duma !czhao end if ! compute total volume and number for mode - dgnum = dgnum_um*1.0e-4 - sx = alog( sigmag ) - x0 = alog( dgnum ) - x3 = x0 + 3.*sx*sx - dstar = dgnum * exp(1.5*sx*sx) - if (iflag .le. 1) then - xvtot = xntot*(pi/6.0)*dstar*dstar*dstar - xmtot = xvtot*drydens*1.0e12 - else - xvtot = xmtot/(drydens*1.0e12) - xntot = xvtot/((pi/6.0)*dstar*dstar*dstar) - end if +! dgnum = dgnum_um*1.0e-4 +! sx = alog( sigmag ) +! x0 = alog( dgnum ) +! x3 = x0 + 3.*sx*sx +! dstar = dgnum * exp(1.5*sx*sx) +! if (iflag .le. 1) then +! xvtot = xntot*(pi/6.0)*dstar*dstar*dstar +! xmtot = xvtot*drydens*1.0e12 +! else +! xvtot = xmtot/(drydens*1.0e12) +! xntot = xvtot/((pi/6.0)*dstar*dstar*dstar) +! end if ! compute section boundaries dlo = dlo_um*1.0e-4 dhi = dhi_um*1.0e-4 @@ -4306,8 +4823,8 @@ subroutine sect02(dgnum_um,sigmag,drydens,iflag,duma,nbin,dlo_um,dhi_um, & xvtot = xntot*(pi/6.0)*dstar*dstar*dstar xmtot = xvtot*drydens*1.0e12 else - xvtot = xmtot/(drydens*1.0e12) - xntot = xvtot/((pi/6.0)*dstar*dstar*dstar) +!czhao xvtot = xmtot/(drydens*1.0e12) +!czhao xntot = xvtot/((pi/6.0)*dstar*dstar*dstar) end if ! compute number and mass for each section sxroot2 = sx * sqrt( 2.0 ) @@ -4494,6 +5011,7 @@ subroutine mieaer_sc( & !ec and vertical cells 1 to kmaxd. ! ilaporte = 33 ! jlaporte = 34 + kcallmieaer2=0 if (iclm .eq. CHEM_DBG_I) then if (jclm .eq. CHEM_DBG_J) then ! initial entry diff --git a/chem/module_phot_fastj.F b/chem/module_phot_fastj.F index c2d5d81599..73e0a6fb69 100644 --- a/chem/module_phot_fastj.F +++ b/chem/module_phot_fastj.F @@ -42,10 +42,11 @@ ! vicinity of Houston using a fully-coupled meteorology-chemistry- ! aerosol model, J. Geophys. Res., 111, D21305, ! doi:10.1029/2005JD006721. -! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, et al. -! (2009), Closure on the single scattering albedo in the WRF-Chem -! framework using data from the MILAGRO campaign, Atmos. Chem. Phys., -! submitted. +! * Barnard, J.C., J.D. Fast, G. Paredes-Miranda, W.P. Arnott, and +! A. Laskin (2010), Technical note: evaluation of the WRF-Chem +! "aerosol chemical to aerosol optical properties" module using data +! from the MILAGRO campaign, Atmos. Chem. Phys., 10, 7325-7340, +! doi:10.5194/acp-10-7325-2010. ! ! Contact Jerome Fast for updates on the status of manuscripts under ! review. @@ -231,7 +232,7 @@ subroutine fastj_driver(id,curr_secs,dtstep,config_flags, & ! only MOSAIC will work. The Mie routine does not know how to handle ! SORGAM aerosols. select case (config_flags%chem_opt) - case ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & + case ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_KPP, & CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ ) processingAerosols = .true. case default diff --git a/chem/optical_driver.F b/chem/optical_driver.F index 1ca468f3e4..6f6faedc9b 100755 --- a/chem/optical_driver.F +++ b/chem/optical_driver.F @@ -16,10 +16,19 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& chem,dz8w,alt,relhum, & h2oai,h2oaj, & tauaer1,tauaer2,tauaer3,tauaer4, & + !czhao + extaer1,extaer2,extaer3,extaer4, & gaer1,gaer2,gaer3,gaer4, & waer1,waer2,waer3,waer4, & bscoef1,bscoef2,bscoef3,bscoef4, & l2aer,l3aer,l4aer,l5aer,l6aer,l7aer, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + extaerlw1,extaerlw2,extaerlw3,extaerlw4,extaerlw5,extaerlw6, & + extaerlw7,extaerlw8,extaerlw9,extaerlw10,extaerlw11,extaerlw12, & + extaerlw13,extaerlw14,extaerlw15,extaerlw16, & + tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4,tauaerlw5,tauaerlw6, & + tauaerlw7,tauaerlw8,tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) @@ -30,6 +39,9 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& USE module_model_constants USE module_optical_averaging USE module_data_mosaic_therm, only: nbin_a + USE module_data_rrtmgaeropt, only: nswbands,nlwbands + USE module_peg_util, only: peg_error_fatal, peg_message + IMPLICIT NONE INTEGER, INTENT(IN ) :: id, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -43,22 +55,43 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& INTENT(IN ) :: chem ! REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & - INTENT(IN ) :: relhum, dz8w, alt, h2oai, h2oaj + INTENT(IN ) :: relhum, dz8w, alt, h2oai, h2oaj, & + totoa_a01, totoa_a02, totoa_a03, totoa_a04 ! ! arrays that hold the aerosol optical properties ! REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), & INTENT(INOUT ) :: & tauaer1, tauaer2, tauaer3, tauaer4, & + !czhao + extaer1, extaer2, extaer3, extaer4, & gaer1, gaer2, gaer3, gaer4, & waer1, waer2, waer3, waer4, & bscoef1, bscoef2, bscoef3, bscoef4 + !for rrtmg shortwave and longwave --czhao + REAL, DIMENSION( ims:ime, kms:kme, jms:jme), & + INTENT(INOUT ) :: extaerlw1,extaerlw2,extaerlw3,extaerlw4,extaerlw5, & + extaerlw6,extaerlw7,extaerlw8,extaerlw9,extaerlw10, & + extaerlw11,extaerlw12,extaerlw13,extaerlw14,extaerlw15, & + extaerlw16, & + tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4,tauaerlw5, & + tauaerlw6,tauaerlw7,tauaerlw8,tauaerlw9,tauaerlw10, & + tauaerlw11,tauaerlw12,tauaerlw13,tauaerlw14,tauaerlw15, & + tauaerlw16 + REAL, DIMENSION( ims:ime, kms:kme, jms:jme,1:4) :: & + tauaersw,extaersw,gaersw,waersw,bscoefsw REAL, DIMENSION( ims:ime, kms:kme, jms:jme, 1:4 ), & INTENT(INOUT ) :: & l2aer, l3aer, l4aer, l5aer, l6aer, l7aer -! + + REAL, DIMENSION( ims:ime, kms:kme, jms:jme,1:nlwbands) :: & + extaerlw,tauaerlw + TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags + character*100 msg + integer lunerr + LOGICAL, INTENT(IN) :: haveaer ! ! local variables @@ -78,8 +111,12 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& case ( RADM2SORG, RADM2SORG_KPP, RADM2SORG_AQ, & GOCART_SIMPLE, RACMSORG_KPP, RACMSORG_AQ, & GOCARTRACM_KPP, GOCARTRADM2_KPP, GOCARTRADM2, & - RACM_ESRLSORG_KPP, CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ ) + RACM_ESRLSORG_KPP, & + CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, CBMZSORG, CBMZSORG_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, & + SAPRC99_MOSAIC_4BIN_VBS2_KPP ) processingAerosols = .true. call wrf_debug(15,'optical driver: process aerosols true') case default @@ -96,11 +133,15 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& ! select case (config_flags%chem_opt) case ( RADM2SORG, RACM_ESRLSORG_KPP, RADM2SORG_KPP, RADM2SORG_AQ, & - GOCARTRACM_KPP, GOCARTRADM2_KPP, GOCARTRADM2, & - GOCART_SIMPLE, RACMSORG_KPP, RACMSORG_AQ ) + GOCARTRACM_KPP, GOCARTRADM2_KPP, GOCARTRADM2, & + GOCART_SIMPLE, RACMSORG_KPP, RACMSORG_AQ, & + CBMZSORG, CBMZSORG_AQ ) nbin_o = 8 - case (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, & - CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ ) + case (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_KPP, & + CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, & + CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, & + CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, & + SAPRC99_MOSAIC_4BIN_VBS2_KPP ) nbin_o = nbin_a end select ! @@ -131,17 +172,85 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,& if( config_flags%aer_op_opt > 0 ) then call wrf_debug(15,'optical driver: call optical averaging') +! lunerr=-1 +! write( msg, '(a, 6i4)' ) & +! 'jdf ', ids, ide, jds, jde, kds, kde +! call peg_message( lunerr, msg ) +! write( msg, '(a, 6i4)' ) & +! 'jdf ', ims, ime, jms, jme, kms, kme +! call peg_message( lunerr, msg ) +! write( msg, '(a, 6i4)' ) & +! 'jdf ', its, ite, jts, jte, kts, kte +! call peg_message( lunerr, msg ) call optical_averaging(id,curr_secs,dtstep,config_flags, & nbin_o,haveaer,option_method,option_mie,chem,dz8w,alt, & relhum,h2oai,h2oaj, & - tauaer1,tauaer2,tauaer3,tauaer4, & - gaer1,gaer2,gaer3,gaer4, & - waer1,waer2,waer3,waer4, & - bscoef1,bscoef2,bscoef3,bscoef4, & +!czhao tauaer1,tauaer2,tauaer3,tauaer4, & +! gaer1,gaer2,gaer3,gaer4, & +! waer1,waer2,waer3,waer4, & +! bscoef1,bscoef2,bscoef3,bscoef4, & + tauaersw,extaersw,gaersw,waersw,bscoefsw, & l2aer,l3aer,l4aer,l5aer,l6aer,l7aer, & + totoa_a01,totoa_a02,totoa_a03,totoa_a04, & + tauaerlw,extaerlw, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) + !short wave + tauaer1=tauaersw(:,:,:,1) + tauaer2=tauaersw(:,:,:,2) + tauaer3=tauaersw(:,:,:,3) + tauaer4=tauaersw(:,:,:,4) + extaer1=extaersw(:,:,:,1) + extaer2=extaersw(:,:,:,2) + extaer3=extaersw(:,:,:,3) + extaer4=extaersw(:,:,:,4) + gaer1=gaersw(:,:,:,1) + gaer2=gaersw(:,:,:,2) + gaer3=gaersw(:,:,:,3) + gaer4=gaersw(:,:,:,4) + waer1=waersw(:,:,:,1) + waer2=waersw(:,:,:,2) + waer3=waersw(:,:,:,3) + waer4=waersw(:,:,:,4) + bscoef1=bscoefsw(:,:,:,1) + bscoef2=bscoefsw(:,:,:,2) + bscoef3=bscoefsw(:,:,:,3) + bscoef4=bscoefsw(:,:,:,4) + !long wave + extaerlw1=extaerlw(:,:,:,1) + extaerlw2=extaerlw(:,:,:,2) + extaerlw3=extaerlw(:,:,:,3) + extaerlw4=extaerlw(:,:,:,4) + extaerlw5=extaerlw(:,:,:,5) + extaerlw6=extaerlw(:,:,:,6) + extaerlw7=extaerlw(:,:,:,7) + extaerlw8=extaerlw(:,:,:,8) + extaerlw9=extaerlw(:,:,:,9) + extaerlw10=extaerlw(:,:,:,10) + extaerlw11=extaerlw(:,:,:,11) + extaerlw12=extaerlw(:,:,:,12) + extaerlw13=extaerlw(:,:,:,13) + extaerlw14=extaerlw(:,:,:,14) + extaerlw15=extaerlw(:,:,:,15) + extaerlw16=extaerlw(:,:,:,16) + tauaerlw1=tauaerlw(:,:,:,1) + tauaerlw2=tauaerlw(:,:,:,2) + tauaerlw3=tauaerlw(:,:,:,3) + tauaerlw4=tauaerlw(:,:,:,4) + tauaerlw5=tauaerlw(:,:,:,5) + tauaerlw6=tauaerlw(:,:,:,6) + tauaerlw7=tauaerlw(:,:,:,7) + tauaerlw8=tauaerlw(:,:,:,8) + tauaerlw9=tauaerlw(:,:,:,9) + tauaerlw10=tauaerlw(:,:,:,10) + tauaerlw11=tauaerlw(:,:,:,11) + tauaerlw12=tauaerlw(:,:,:,12) + tauaerlw13=tauaerlw(:,:,:,13) + tauaerlw14=tauaerlw(:,:,:,14) + tauaerlw15=tauaerlw(:,:,:,15) + tauaerlw16=tauaerlw(:,:,:,16) + call wrf_debug(15,'optical driver: after call optical averaging') else !If aer_op_opt==0 then the optical arrays are already set to !zero in chemics_init so there will not be a problem if the diff --git a/dyn_em/Makefile b/dyn_em/Makefile index e926c30650..56963f7c8e 100644 --- a/dyn_em/Makefile +++ b/dyn_em/Makefile @@ -282,7 +282,11 @@ start_em.o: module_bc_em.o \ ../share/module_model_constants.o \ ../share/module_bc.o \ ../share/module_date_time.o \ - ../phys/module_physics_init.o + ../phys/module_physics_init.o \ + ../chem/module_aerosols_sorgam.o \ + ../chem/module_gocart_aerosols.o \ + ../chem/module_mosaic_driver.o \ + ../chem/module_input_tracer.o solve_em.o: module_small_step_em.o \ module_em.o \ diff --git a/dyn_em/module_first_rk_step_part1.F b/dyn_em/module_first_rk_step_part1.F index 81a3c1674a..5a263f2e88 100644 --- a/dyn_em/module_first_rk_step_part1.F +++ b/dyn_em/module_first_rk_step_part1.F @@ -340,6 +340,15 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags & & ,TAUAER600=grid%tauaer3, TAUAER999=grid%tauaer4 & ! jcb & ,GAER300=grid%gaer1, GAER400=grid%gaer2, GAER600=grid%gaer3, GAER999=grid%gaer4 & ! jcb & ,WAER300=grid%waer1, WAER400=grid%waer2, WAER600=grid%waer3, WAER999=grid%waer4 & ! jcb + & ,TAUAERlw1 =grid%tauaerlw1, TAUAERlw2=grid%tauaerlw2 & + & ,TAUAERlw3 =grid%tauaerlw3, TAUAERlw4=grid%tauaerlw4 & + & ,TAUAERlw5 =grid%tauaerlw5, TAUAERlw6=grid%tauaerlw6 & + & ,TAUAERlw7 =grid%tauaerlw7, TAUAERlw8=grid%tauaerlw8 & + & ,TAUAERlw9 =grid%tauaerlw9, TAUAERlw10=grid%tauaerlw10 & + & ,TAUAERlw11 =grid%tauaerlw11, TAUAERlw12=grid%tauaerlw12 & + & ,TAUAERlw13 =grid%tauaerlw13, TAUAERlw14=grid%tauaerlw14 & + & ,TAUAERlw15 =grid%tauaerlw15, TAUAERlw16=grid%tauaerlw16 & + & ,progn=config_flags%progn & #endif & ,slope_rad=config_flags%slope_rad,topo_shading=config_flags%topo_shading & & ,shadowmask=grid%shadowmask,ht=grid%ht,dx=grid%dx,dy=grid%dy ) diff --git a/dyn_em/module_initialize_real.F b/dyn_em/module_initialize_real.F index c5acc32cf1..956eeda4dc 100644 --- a/dyn_em/module_initialize_real.F +++ b/dyn_em/module_initialize_real.F @@ -4008,7 +4008,7 @@ SUBROUTINE theta_to_t ( t , p , p00 , & REAL , PARAMETER :: Rd = r_d DO j = jts , MIN ( jde-1 , jte ) - DO k = kts , kte + DO k = kts , kte-1 DO i = its , MIN (ide-1 , ite ) t(i,k,j) = t(i,k,j) / ( ( p00 / p(i,k,j) ) ** (Rd / Cp) ) END DO @@ -4257,7 +4257,7 @@ SUBROUTINE rh_to_mxrat (rh, t, p, q , wrt_liquid , & ! at which the liquid and ice phase change occurs. DO j = jts , MIN ( jde-1 , jte ) - DO k = kts , kte + DO k = kts , kte-1 DO i = its , MIN (ide-1 , ite ) rh(i,k,j) = MIN ( MAX ( rh(i,k,j) , 0. ) , 100. ) END DO @@ -4266,7 +4266,7 @@ SUBROUTINE rh_to_mxrat (rh, t, p, q , wrt_liquid , & IF ( wrt_liquid ) THEN DO j = jts , MIN ( jde-1 , jte ) - DO k = kts , kte + DO k = kts , kte-1 DO i = its , MIN (ide-1 , ite ) ! es is reduced by RH here to avoid problems in low-pressure cases @@ -4285,7 +4285,7 @@ SUBROUTINE rh_to_mxrat (rh, t, p, q , wrt_liquid , & ELSE DO j = jts , MIN ( jde-1 , jte ) - DO k = kts , kte + DO k = kts , kte-1 DO i = its , MIN (ide-1 , ite ) t1 = t(i,k,j) - 273.16 @@ -4341,7 +4341,7 @@ SUBROUTINE rh_to_mxrat (rh, t, p, q , wrt_liquid , & ! domain that is above the selected pressure level. DO j = jts , MIN ( jde-1 , jte ) - DO k = kts , kte + DO k = kts , kte-1 DO i = its , MIN (ide-1 , ite ) IF ( p(i,k,j) .LT. qv_max_p_safe ) THEN IF ( q(i,k,j) .GT. qv_max_flag ) THEN diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 994ce3004c..b9d8e9fe9c 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -1107,6 +1107,14 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & grid%gaer1,grid%gaer2,grid%gaer3,grid%gaer4, & grid%waer1,grid%waer2,grid%waer3,grid%waer4, & grid%l2aer,grid%l3aer,grid%l4aer,grid%l5aer,grid%l6aer,grid%l7aer, & + grid%extaerlw1,grid%extaerlw2,grid%extaerlw3,grid%extaerlw4, & + grid%extaerlw5,grid%extaerlw6,grid%extaerlw7,grid%extaerlw8, & + grid%extaerlw9,grid%extaerlw10,grid%extaerlw11,grid%extaerlw12, & + grid%extaerlw13,grid%extaerlw14,grid%extaerlw15,grid%extaerlw16, & + grid%tauaerlw1,grid%tauaerlw2,grid%tauaerlw3,grid%tauaerlw4, & + grid%tauaerlw5,grid%tauaerlw6,grid%tauaerlw7,grid%tauaerlw8, & + grid%tauaerlw9,grid%tauaerlw10,grid%tauaerlw11,grid%tauaerlw12, & + grid%tauaerlw13,grid%tauaerlw14,grid%tauaerlw15,grid%tauaerlw16, & grid%pm2_5_dry,grid%pm2_5_water,grid%pm2_5_dry_ec, & grid%last_chem_time_year,grid%last_chem_time_month, & grid%last_chem_time_day,grid%last_chem_time_hour, & diff --git a/main/ideal.F b/main/ideal.F index 1725d880d4..35347d9cd7 100644 --- a/main/ideal.F +++ b/main/ideal.F @@ -9,8 +9,24 @@ PROGRAM ideal USE module_timing USE module_wrf_error +#ifdef WRF_CHEM + USE module_input_chem_data + USE module_input_chem_bioemiss + USE module_input_chem_emissopt3 +#endif IMPLICIT NONE +#ifdef WRF_CHEM + ! interface + INTERFACE + ! mediation-supplied + SUBROUTINE med_read_wrf_chem_bioemiss ( grid , config_flags) + USE module_domain + TYPE (domain) grid + TYPE (grid_config_rec_type) config_flags + END SUBROUTINE med_read_wrf_chem_bioemiss + END INTERFACE +#endif REAL :: time @@ -145,6 +161,75 @@ END SUBROUTINE med_initialdata_output CALL wrf_dm_bcast_bytes( configbuf, nbytes ) CALL set_config_as_buffer( configbuf, configbuflen ) #endif + +#ifdef WRF_CHEM + IF( grid%chem_opt > 0 ) then + ! Read the chemistry data from a previous wrf forecast (wrfout file) + IF(grid%chem_in_opt == 1 ) THEN + message = 'INITIALIZING CHEMISTRY WITH OLD SIMULATION' + CALL wrf_message ( message ) + + CALL input_ext_chem_file( grid ) + IF(grid%emiss_opt == ECPTEC .or. grid%emiss_opt == GOCART_ECPTEC & + .or. grid%biomass_burn_opt == BIOMASSB) THEN + message = 'READING EMISSIONS DATA OPT 3' + CALL wrf_message ( message ) +! CALL med_read_bin_chem_emissopt3 ( grid , config_flags) + CALL med_read_wrf_chem_emissopt3 ( grid , config_flags) + END IF + + IF(grid%bio_emiss_opt == 2 ) THEN + message = 'READING BEIS3.11 EMISSIONS DATA' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_bioemiss ( grid , config_flags) + else IF(grid%bio_emiss_opt == 3 ) THEN !shc + message = 'READING MEGAN 2 EMISSIONS DATA' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_bioemiss ( grid , config_flags) + END IF + + IF(grid%dust_opt == 1 .or. grid%dmsemis_opt == 1 .or. grid%chem_opt == 300) THEN !shc + message = 'READING GOCART BG AND/OR DUST and DMS REF FIELDS' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_gocart_bg ( grid , config_flags) + END IF + + ELSEIF(grid%chem_in_opt == 0)then + ! Generate chemistry data from a idealized vertical profile + message = 'STARTING WITH BACKGROUND CHEMISTRY ' + CALL wrf_message ( message ) + + CALL input_chem_profile ( grid ) + + IF(grid%bio_emiss_opt == 2 ) THEN + message = 'READING BEIS3.11 EMISSIONS DATA' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_bioemiss ( grid , config_flags) + else IF(grid%bio_emiss_opt == 3 ) THEN !shc + message = 'READING MEGAN 2 EMISSIONS DATA' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_bioemiss ( grid , config_flags) + END IF + IF(grid%emiss_opt == ECPTEC .or. grid%emiss_opt == GOCART_ECPTEC & + .or. grid%biomass_burn_opt == BIOMASSB) THEN + message = 'READING EMISSIONS DATA OPT 3' + CALL wrf_message ( message ) +! CALL med_read_bin_chem_emissopt3 ( grid , config_flags) + CALL med_read_wrf_chem_emissopt3 ( grid , config_flags) + END IF + + IF(grid%dust_opt == 1 .or. grid%dmsemis_opt == 1 .or. grid%chem_opt == 300) THEN !shc + message = 'READING GOCART BG AND/OR DUST and DMS REF FIELDS' + CALL wrf_message ( message ) + CALL med_read_wrf_chem_gocart_bg ( grid , config_flags) + END IF + + ELSE + message = 'RUNNING WITHOUT CHEMISTRY INITIALIZATION' + CALL wrf_message ( message ) + END IF + END IF +#endif CALL med_initialdata_output( head_grid , config_flags ) diff --git a/phys/Makefile b/phys/Makefile index f4462eb42d..db1476cbbc 100644 --- a/phys/Makefile +++ b/phys/Makefile @@ -335,6 +335,8 @@ module_sf_pxlsm.o: ../share/module_model_constants.o module_ra_rrtmg_sw.o: module_ra_rrtmg_lw.o +module_ra_rrtmg_lw.o: ../share/module_model_constants.o + module_physics_addtendc.o: \ module_cu_kf.o \ module_cu_kfeta.o \ diff --git a/phys/module_microphysics_driver.F b/phys/module_microphysics_driver.F index e49713300d..eeca05fc02 100644 --- a/phys/module_microphysics_driver.F +++ b/phys/module_microphysics_driver.F @@ -404,7 +404,7 @@ SUBROUTINE microphysics_driver( & !----------- IF( PRESENT(chem_opt) .AND. PRESENT(progn) ) THEN - IF( chem_opt==0 .AND. progn==1 .AND. mp_physics==LINSCHEME ) THEN + IF( chem_opt==0 .AND. progn==1 .AND. (mp_physics==LINSCHEME .OR. mp_physics==MORR_TWO_MOMENT)) THEN IF( PRESENT( QNDROP_CURR ) ) THEN CALL wrf_debug ( 100 , 'microphysics_driver: calling prescribe_aerosol_mixactivate' ) ! 06-nov-2005 rce - id & itimestep added to arg list @@ -419,8 +419,8 @@ SUBROUTINE microphysics_driver( & its,ite, jts,jte, kts,kte, & F_QC=f_qc, F_QI=f_qi ) END IF - ELSE IF( progn==1 .AND. mp_physics/=LINSCHEME ) THEN - call wrf_error_fatal("SETTINGS ERROR: Prognostic cloud droplet number can only be used with the mp_physics=LINSCHEME.") + ELSE IF( progn==1 .AND. mp_physics/=LINSCHEME .AND. mp_physics/=MORR_TWO_MOMENT) THEN + call wrf_error_fatal("SETTINGS ERROR: Prognostic cloud droplet number can only be used with the mp_physics=LINSCHEME or MORRISON.") END IF END IF @@ -528,9 +528,13 @@ SUBROUTINE microphysics_driver( & ,qscuten=qscuten & ! hm ,qicuten=qicuten & ! hm ,mu=mu & ! hm + ,F_QNDROP=f_qndrop & ! hm for wrf-chem + ,QNDROP=qndrop_curr & ! hm for wrf-chem ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme & ,ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte & + ,QLSINK=qlsink & ! jdf for wrf-chem + ,PRECR=precr,PRECI=preci,PRECS=precs,PRECG=precg & ! jdf for wrf-chem ) ELSE Call wrf_error_fatal( 'arguments not present for calling morrison two moment') diff --git a/phys/module_mp_morr_two_moment.F b/phys/module_mp_morr_two_moment.F index 14480f91eb..cec99d84e3 100644 --- a/phys/module_mp_morr_two_moment.F +++ b/phys/module_mp_morr_two_moment.F @@ -51,6 +51,7 @@ MODULE MODULE_MP_MORR_TWO_MOMENT ! SWITCHES FOR MICROPHYSICS SCHEME ! IACT = 1, USE POWER-LAW CCN SPECTRA, NCCN = CS^K ! IACT = 2, USE LOGNORMAL AEROSOL SIZE DIST TO DERIVE CCN SPECTRA +! IACT = 3, ACTIVATION CALCULATED IN MODULE_MIXACTIVATE INTEGER, PRIVATE :: IACT @@ -464,9 +465,12 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & RHO, PII, P, DT_IN, DZ, HT, W, & RAINNC, RAINNCV, SR, & qrcuten, qscuten, qicuten, mu & ! hm added + ,F_QNDROP, qndrop & ! hm added, wrf-chem ,IDS,IDE, JDS,JDE, KDS,KDE & ! domain dims ,IMS,IME, JMS,JME, KMS,KME & ! memory dims ,ITS,ITE, JTS,JTE, KTS,KTE & ! tile dims ) +!jdf ,C2PREC3D,CSED3D,ISED3D,SSED3D,GSED3D,RSED3D & ! HM ADD, WRF-CHEM + ,QLSINK,PRECR,PRECI,PRECS,PRECG & ! HM ADD, WRF-CHEM ) ! QV - water vapor mixing ratio (kg/kg) @@ -501,6 +505,10 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & ! KZH - heat eddy diffusion coefficient from YSU scheme (M^2 S-1), NEEDED FOR DROPLET ACTIVATION (SEE CODE BELOW) ! EFFCS - CLOUD DROPLET EFFECTIVE RADIUS OUTPUT TO RADIATION CODE (micron) ! EFFIS - CLOUD DROPLET EFFECTIVE RADIUS OUTPUT TO RADIATION CODE (micron) +! HM, ADDED FOR WRF-CHEM COUPLING +! QLSINK - TENDENCY OF CLOUD WATER TO RAIN, SNOW, GRAUPEL (KG/KG/S) +! CSED,ISED,SSED,GSED,RSED - SEDIMENTATION FLUXES (KG/M^2/S) FOR CLOUD WATER, ICE, SNOW, GRAUPEL, RAIN +! PRECI,PRECS,PRECG,PRECR - SEDIMENTATION FLUXES (KG/M^2/S) FOR ICE, SNOW, GRAUPEL, RAIN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! reflectivity currently not included!!!! @@ -538,7 +546,12 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & ! Temporary changed from INOUT to IN REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: & - qv, qc, qr, qi, qs, qg, ni, ns, nr, TH, NG + qv, qc, qr, qi, qs, qg, ni, ns, nr, TH, NG +!jdf qndrop ! hm added, wrf-chem + REAL, DIMENSION(ims:ime, kms:kme, jms:jme), optional,INTENT(INOUT):: qndrop +!jdf REAL, DIMENSION(ims:ime, kms:kme, jms:jme),INTENT(INOUT):: CSED3D, & + REAL, DIMENSION(ims:ime, kms:kme, jms:jme), optional,INTENT(INOUT):: QLSINK, & + PRECI,PRECS,PRECG,PRECR ! HM, WRF-CHEM !, effcs, effis REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN):: & @@ -586,6 +599,12 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN):: & mu + LOGICAL, INTENT(IN), OPTIONAL :: F_QNDROP ! wrf-chem + LOGICAL :: flag_qndrop ! wrf-chem + integer :: iinum ! wrf-chem + +! wrf-chem + REAL, DIMENSION(kts:kte) :: nc1d, nc_tend1d,C2PREC,CSED,ISED,SSED,GSED,RSED ! HM add reflectivity ! dbz @@ -596,6 +615,10 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & REAL DT ! LOGICAL:: dBZ_tstep ! GT +! below for wrf-chem + flag_qndrop = .false. + IF ( PRESENT ( f_qndrop ) ) flag_qndrop = f_qndrop +!!!!!!!!!!!!!!!!!!!!!! ! Initialize tendencies (all set to 0) and transfer ! array to local variables @@ -643,6 +666,7 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & NR_TEND1D(k) = 0. T_TEND1D(k) = 0. QV_TEND1D(k) = 0. + nc_tend1d(k) = 0. ! wrf-chem QC1D(k) = QC(i,k,j) QI1D(k) = QI(i,k,j) @@ -669,7 +693,22 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & qrcu1d(k) = qrcuten(i,k,j)/mu(i,j) qscu1d(k) = qscuten(i,k,j)/mu(i,j) qicu1d(k) = qicuten(i,k,j)/mu(i,j) - end do + end do !jdf added this +! below for wrf-chem + IF (flag_qndrop .AND. PRESENT( qndrop )) THEN + iact = 3 + DO k = kts, kte + nc1d(k)=qndrop(i,k,j) + iinum=0 + ENDDO + ELSE + DO k = kts, kte + nc1d(k)=0. ! temporary placeholder, set to constant in microphysics subroutine + iinum=1 + ENDDO + ENDIF + +!jdf end do call MORR_TWO_MOMENT_MICRO(QC_TEND1D, QI_TEND1D, QNI_TEND1D, QR_TEND1D, & NI_TEND1D, NS_TEND1D, NR_TEND1D, & @@ -682,7 +721,9 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & QG_TEND1D,NG_TEND1D,QG1D,NG1D,EFFG1D, & qrcu1d, qscu1d, qicu1d, & ! ADD SEDIMENTATION TENDENCIES - QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN) + QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN, & + nc1d, nc_tend1d, iinum, C2PREC,CSED,ISED,SSED,GSED,RSED & !wrf-chem + ) ! ! Transfer 1D arrays back into 3D arrays @@ -713,6 +754,22 @@ SUBROUTINE MP_MORR_TWO_MOMENT(ITIMESTEP, & EFFR(i,k,j) = EFFR1D(k) EFFG(I,K,j) = EFFG1D(K) +! wrf-chem + IF (flag_qndrop .AND. PRESENT( qndrop )) THEN + qndrop(i,k,j) = nc1d(k) +!jdf CSED3D(I,K,J) = CSED(K) + END IF + IF ( PRESENT( QLSINK ) ) THEN + if(qc(i,k,j)>1.e-10) then + QLSINK(I,K,J) = C2PREC(K)/QC(I,K,J) + else + QLSINK(I,K,J) = 0.0 + endif + END IF + IF ( PRESENT( PRECR ) ) PRECR(I,K,J) = RSED(K) + IF ( PRESENT( PRECI ) ) PRECI(I,K,J) = ISED(K) + IF ( PRESENT( PRECS ) ) PRECS(I,K,J) = SSED(K) + IF ( PRESENT( PRECG ) ) PRECG(I,K,J) = GSED(K) ! EFFECTIVE RADIUS FOR RADIATION CODE (currently not coupled) ! HM, ADD LIMIT TO PREVENT BLOWING UP OPTICAL PROPERTIES, 8/18/07 ! EFFCS(I,K,J) = MIN(EFFC(I,K,J),50.) @@ -741,7 +798,10 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & IMS,IME, JMS,JME, KMS,KME, & ITS,ITE, JTS,JTE, KTS,KTE, & ! ADD GRAUPEL QG3DTEN,NG3DTEN,QG3D,NG3D,EFFG,qrcu1d,qscu1d, qicu1d, & - QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN) + QGSTEN,QRSTEN,QISTEN,QNISTEN,QCSTEN, & + nc3d,nc3dten,iinum, & ! wrf-chem + c2prec,CSED,ISED,SSED,GSED,RSED & ! hm added, wrf-chem + ) !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! THIS PROGRAM IS THE MAIN TWO-MOMENT MICROPHYSICS SUBROUTINE DESCRIBED BY @@ -796,6 +856,10 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & REAL, DIMENSION(KTS:KTE) :: DZQ ! DIFFERENCE IN HEIGHT ACROSS LEVEL (m) REAL, DIMENSION(KTS:KTE) :: W3D ! GRID-SCALE VERTICAL VELOCITY (M/S) REAL, DIMENSION(KTS:KTE) :: WVAR ! SUB-GRID VERTICAL VELOCITY (M/S) +! below for wrf-chem + REAL, DIMENSION(KTS:KTE) :: nc3d + REAL, DIMENSION(KTS:KTE) :: nc3dten + integer, intent(in) :: iinum ! HM ADDED GRAUPEL VARIABLES REAL, DIMENSION(KTS:KTE) :: QG3DTEN ! GRAUPEL MIX RATIO TENDENCY (KG/KG/S) @@ -1044,11 +1108,15 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & INTEGER IDROP +! FOR WRF-CHEM + REAL, DIMENSION(KTS:KTE)::C2PREC,CSED,ISED,SSED,GSED,RSED + ! DROPLET CONCENTRATION AND ITS TENDENCY ! NOTE: CURRENTLY DROPLET CONCENTRATION IS SPECIFIED !!!!! ! TENDENCY OF NC IS CALCULATED BUT IT IS NOT USED !!! - REAL, DIMENSION(KTS:KTE) :: NC3DTEN ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG/S) - REAL, DIMENSION(KTS:KTE) :: NC3D ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG) +! comment lines for wrf-chem since these are intent(in) in that case +! REAL, DIMENSION(KTS:KTE) :: NC3DTEN ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG/S) +! REAL, DIMENSION(KTS:KTE) :: NC3D ! CLOUD DROPLET NUMBER CONCENTRATION (1/KG) !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC @@ -1061,6 +1129,14 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & ! NC3DTEN LOCAL ARRAY INITIALIZED NC3DTEN(K) = 0. +! INITIALIZE VARIABLES FOR WRF-CHEM OUTPUT TO ZERO + + C2PREC(K)=0. + CSED(K)=0. + ISED(K)=0. + SSED(K)=0. + GSED(K)=0. + RSED(K)=0. ! LATENT HEAT OF VAPORATION @@ -1254,10 +1330,10 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & ! INUM = 0, PREDICT DROPLET NUMBER ! INUM = 1, SET CONSTANT DROPLET NUMBER -! IF (INUM.EQ.1) THEN + IF (iinum.EQ.1) THEN ! CONVERT NDCNST FROM CM-3 TO KG-1 NC3D(K)=NDCNST*1.E6/RHO(K) -! END IF + END IF ! GET SIZE DISTRIBUTION PARAMETERS @@ -1742,6 +1818,9 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & NC3DTEN(K) = NC3DTEN(K)+ (-NPRA(K)-NPRC(K)) NR3DTEN(K) = NR3DTEN(K)+ (NPRC1(K)+NRAGG(K)-NPRACG(K)) +! HM ADD, WRF-CHEM, ADD TENDENCIES FOR C2PREC + + C2PREC(K) = PRA(K)+PRC(K) IF (PRE(K).LT.0.) THEN DUM = PRE(K)*DT/QR3D(K) DUM = MAX(-1.,DUM) @@ -1828,10 +1907,10 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & ! INUM = 0, PREDICT DROPLET NUMBER ! INUM = 1, SET CONSTANT DROPLET NUMBER -! IF (INUM.EQ.1) THEN + IF (iinum.EQ.1) THEN ! CONVERT NDCNST FROM CM-3 TO KG-1 NC3D(K)=NDCNST*1.E6/RHO(K) -! END IF + END IF ! CALCULATE SIZE DISTRIBUTION PARAMETERS ! MAKE SURE NUMBER CONCENTRATIONS AREN'T NEGATIVE @@ -2944,6 +3023,10 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & NR3DTEN(K) = NR3DTEN(K)+(NPRC1(K)-NPRACS(K)-NNUCCR(K) & +NRAGG(K)-NIACR(K)-NIACRS(K)-NPRACG(K)-NGRACS(K)) +! HM ADD, WRF-CHEM, ADD TENDENCIES FOR C2PREC + + C2PREC(K) = PRA(K)+PRC(K)+PSACWS(K)+QMULTS(K)+QMULTG(K)+PSACWG(K)+ & + PGSACW(K)+MNUCCC(K)+PSACWI(K) !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! NOW CALCULATE SATURATION ADJUSTMENT TO CONDENSE EXTRA VAPOR ABOVE ! WATER SATURATION @@ -3059,9 +3142,9 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & DUMFNG(K) = NG3D(K)+NG3DTEN(K)*DT ! SWITCH FOR CONSTANT DROPLET NUMBER -! IF (INUM.EQ.1) THEN + IF (iinum.EQ.1) THEN DUMFNC(K) = NC3D(K) -! END IF + END IF ! GET DUMMY LAMDA FOR SEDIMENTATION CALCULATIONS @@ -3298,6 +3381,12 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & DUMG(K) = DUMG(K)+FALTNDG*DT/NSTEP DUMFNG(K) = DUMFNG(K)+FALTNDNG*DT/NSTEP +! FOR WRF-CHEM, NEED PRECIP RATES (UNITS OF KG/M^2/S) + CSED(K)=CSED(K)+FALOUTC(K)/NSTEP + ISED(K)=ISED(K)+FALOUTI(K)/NSTEP + SSED(K)=SSED(K)+FALOUTS(K)/NSTEP + GSED(K)=GSED(K)+FALOUTG(K)/NSTEP + RSED(K)=RSED(K)+FALOUTR(K)/NSTEP END DO ! GET PRECIPITATION AND SNOWFALL ACCUMULATION DURING THE TIME STEP @@ -3340,7 +3429,7 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & QI3D(k) = QI3D(k)+QI3DTEN(k)*DT QNI3D(k) = QNI3D(k)+QNI3DTEN(k)*DT QR3D(k) = QR3D(k)+QR3DTEN(k)*DT -! NC3D(k) = NC3D(k)+NC3DTEN(k)*DT + NC3D(k) = NC3D(k)+NC3DTEN(k)*DT NI3D(k) = NI3D(k)+NI3DTEN(k)*DT NS3D(k) = NS3D(k)+NS3DTEN(k)*DT NR3D(k) = NR3D(k)+NR3DTEN(k)*DT @@ -3680,14 +3769,14 @@ SUBROUTINE MORR_TWO_MOMENT_MICRO(QC3DTEN,QI3DTEN,QNI3DTEN,QR3DTEN, & ! OF DROPLETS, ESPECIALLY WHEN INUM = 1, SET MAX AT 10 CM-3 NI3D(K) = MIN(NI3D(K),10.E6/RHO(K)) ! ADD BOUND ON DROPLET NUMBER - CANNOT EXCEED AEROSOL CONCENTRATION - IF (INUM.EQ.0.AND.IACT.EQ.2) THEN + IF (iinum.EQ.0.AND.IACT.EQ.2) THEN NC3D(K) = MIN(NC3D(K),(NANEW1+NANEW2)/RHO(K)) END IF ! SWITCH FOR CONSTANT DROPLET NUMBER -! IF (INUM.EQ.1) THEN + IF (iinum.EQ.1) THEN ! CHANGE NDCNST FROM CM-3 TO KG-1 NC3D(K) = NDCNST*1.E6/RHO(K) -! END IF + END IF END DO !!! K LOOP diff --git a/phys/module_ra_rrtmg_lw.F b/phys/module_ra_rrtmg_lw.F index 63fb7158f9..f8b2407699 100644 --- a/phys/module_ra_rrtmg_lw.F +++ b/phys/module_ra_rrtmg_lw.F @@ -7003,6 +7003,7 @@ subroutine taugb12 ! Upper atmosphere loop do lay = laytrop+1, nlayers + do ig = 1, ng12 taug(lay,ngs11+ig) = 0.0_rb fracs(lay,ngs11+ig) = 0.0_rb @@ -7044,7 +7045,6 @@ subroutine taugb13 real(kind=rb) :: refrat_planck_a, refrat_m_a, refrat_m_a3 real(kind=rb) :: tau_major, tau_major1 - ! Minor gas mapping levels : ! lower - co2, p = 1053.63 mb, t = 294.2 k ! lower - co, p = 706 mb, t = 278.94 k @@ -11333,6 +11333,14 @@ SUBROUTINE RRTMG_LWRAD( & qv3d, qc3d, qr3d, & qi3d, qs3d, qg3d, & f_qv, f_qc, f_qr, f_qi, f_qs, f_qg, & + tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4, & ! czhao + tauaerlw5,tauaerlw6,tauaerlw7,tauaerlw8, & ! czhao + tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & ! czhao + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16, & ! czhao + aer_ra_feedback, & !czhao +!jdfcz progn,prescribe, & !czhao + progn, & !czhao + qndrop3d,f_qndrop, & !czhao ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte, & @@ -11388,7 +11396,9 @@ SUBROUTINE RRTMG_LWRAD( & QR3D, & QI3D, & QS3D, & - QG3D + QG3D, & + QNDROP3D + real pi,third,relconst,lwpmin,rhoh2o REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) , & OPTIONAL , & @@ -11397,7 +11407,22 @@ SUBROUTINE RRTMG_LWRAD( & F_RAIN_PHY LOGICAL, OPTIONAL, INTENT(IN) :: & - F_QV,F_QC,F_QR,F_QI,F_QS,F_QG + F_QV,F_QC,F_QR,F_QI,F_QS,F_QG,F_QNDROP +! Optional + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), OPTIONAL , & + INTENT(IN ) :: tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4, & ! czhao + tauaerlw5,tauaerlw6,tauaerlw7,tauaerlw8, & ! czhao + tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & ! czhao + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16 + + INTEGER, INTENT(IN ), OPTIONAL :: aer_ra_feedback +!jdfcz INTEGER, INTENT(IN ), OPTIONAL :: progn,prescribe + INTEGER, INTENT(IN ), OPTIONAL :: progn + + real, parameter :: thresh=1.e-9 + real slope + character(len=200) :: msg + ! Top of atmosphere and surface longwave fluxes (W m-2) REAL, DIMENSION( ims:ime, jms:jme ), & @@ -11426,7 +11451,8 @@ SUBROUTINE RRTMG_LWRAD( & QR1D, & QI1D, & QS1D, & - QG1D + QG1D, & + qndrop1d ! Added local arrays for RRTMG integer :: ncol, & @@ -11563,6 +11589,31 @@ SUBROUTINE RRTMG_LWRAD( & LOGICAL :: predicate !------------------------------------------------------------------ +#ifdef WRF_CHEM + IF ( aer_ra_feedback == 1) then + IF ( .NOT. & + ( PRESENT(tauaerlw1) .AND. & + PRESENT(tauaerlw2) .AND. & + PRESENT(tauaerlw3) .AND. & + PRESENT(tauaerlw4) .AND. & + PRESENT(tauaerlw5) .AND. & + PRESENT(tauaerlw6) .AND. & + PRESENT(tauaerlw7) .AND. & + PRESENT(tauaerlw8) .AND. & + PRESENT(tauaerlw9) .AND. & + PRESENT(tauaerlw10) .AND. & + PRESENT(tauaerlw11) .AND. & + PRESENT(tauaerlw12) .AND. & + PRESENT(tauaerlw13) .AND. & + PRESENT(tauaerlw14) .AND. & + PRESENT(tauaerlw15) .AND. & + PRESENT(tauaerlw16) ) ) THEN + CALL wrf_error_fatal & + ('Warning: missing fields required for aerosol radiation' ) + ENDIF + ENDIF +#endif + !-----CALCULATE LONG WAVE RADIATION ! @@ -11628,6 +11679,14 @@ SUBROUTINE RRTMG_LWRAD( & ENDIF ENDIF + IF ( PRESENT(F_QNDROP).AND.PRESENT(QNDROP3D)) THEN + IF (F_QNDROP) THEN + DO K=kts,kte + qndrop1d(K)=qndrop3d(I,K,J) + ENDDO + ENDIF + ENDIF + ! This logic is tortured because cannot test F_QI unless ! it is present, and order of evaluation of expressions ! is not specified in Fortran @@ -11834,8 +11893,45 @@ SUBROUTINE RRTMG_LWRAD( & cliqwp(ncol,k) = gliqwp / max(0.01,cldfrac(ncol,k)) ! In-cloud liquid water path. end do +!link the aerosol feedback to cloud -czhao + if( PRESENT( progn ) ) then + if (progn == 1) then +!jdfcz if(prescribe==0) then + + pi = 4.*atan(1.0) + third=1./3. + rhoh2o=1.e3 + relconst=3/(4.*pi*rhoh2o) +! minimun liquid water path to calculate rel +! corresponds to optical depth of 1.e-3 for radius 4 microns. + lwpmin=3.e-5 + do k = kts, kte + reliq(ncol,k) = 10. + if( PRESENT( F_QNDROP ) ) then + if( F_QNDROP ) then + if ( qc1d(k)*pdel(ncol,k).gt.lwpmin.and. & + qndrop1d(k).gt.1000. ) then + reliq(ncol,k)=(relconst*qc1d(k)/qndrop1d(k))**third ! effective radius in m +! apply scaling from Martin et al., JAS 51, 1830. + reliq(ncol,k)=1.1*reliq(ncol,k) + reliq(ncol,k)=reliq(ncol,k)*1.e6 ! convert from m to microns + reliq(ncol,k)=max(reliq(ncol,k),4.) + reliq(ncol,k)=min(reliq(ncol,k),20.) + end if + end if + end if + end do +!jdfcz else ! prescribe ! following Kiehl - call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) +! write(0,*) 'lw prescribe aerosol',maxval(qndrop3d) +!jdfcz endif + else ! progn + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + endif + else !present(progn) + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + endif ! following Kristjansson and Mitchell call reicalc(ncol, pcols, pver, tlay, reice) @@ -11885,13 +11981,74 @@ SUBROUTINE RRTMG_LWRAD( & cldfrac, ciwpth, clwpth, rei, rel, taucld, cldfmcl, & ciwpmcl, clwpmcl, reicmcl, relqmcl, taucmcl) +!-------------------------------------------------------------------------- +! Aerosol optical depth, single scattering albedo and asymmetry parameter -czhao 03/2010 +!-------------------------------------------------------------------------- ! Aerosol optical depth by layer for each RRTMG longwave band ! No aerosols in layer above model top (kte+1) - do nb = 1, nbndlw - do k = kts, kte+1 - tauaer(ncol,k,nb) = 0. - enddo - enddo +! do nb = 1, nbndlw +! do k = kts, kte+1 +! tauaer(ncol,k,nb) = 0. +! enddo +! enddo + +! ... Aerosol effects. Added aerosol feedbacks from Chem , 03/2010 -czhao +! + do nb = 1, nbndlw + do k = kts,kte+1 + tauaer(ncol,k,nb) = 0. + end do + end do + +#ifdef WRF_CHEM + IF ( AER_RA_FEEDBACK == 1) then +! do nb = 1, nbndlw + do k = kts,kte !wig + if(tauaerlw1(i,k,j).gt.thresh .and. tauaerlw16(i,k,j).gt.thresh) then + tauaer(ncol,k,1)=tauaerlw1(i,k,j) + tauaer(ncol,k,2)=tauaerlw2(i,k,j) + tauaer(ncol,k,3)=tauaerlw3(i,k,j) + tauaer(ncol,k,4)=tauaerlw4(i,k,j) + tauaer(ncol,k,5)=tauaerlw5(i,k,j) + tauaer(ncol,k,6)=tauaerlw6(i,k,j) + tauaer(ncol,k,7)=tauaerlw7(i,k,j) + tauaer(ncol,k,8)=tauaerlw8(i,k,j) + tauaer(ncol,k,9)=tauaerlw9(i,k,j) + tauaer(ncol,k,10)=tauaerlw10(i,k,j) + tauaer(ncol,k,11)=tauaerlw11(i,k,j) + tauaer(ncol,k,12)=tauaerlw12(i,k,j) + tauaer(ncol,k,13)=tauaerlw13(i,k,j) + tauaer(ncol,k,14)=tauaerlw14(i,k,j) + tauaer(ncol,k,15)=tauaerlw15(i,k,j) + tauaer(ncol,k,16)=tauaerlw16(i,k,j) + endif + enddo ! k +! end do ! nb + +!wig beg + do nb = 1, nbndlw + slope = 0. !use slope as a sum holder + do k = kts,kte + slope = slope + tauaer(ncol,k,nb) + end do + if( slope < 0. ) then + write(msg,'("ERROR: Negative total lw optical depth of ",f8.2," at point i,j,nb=",3i5)') slope,i,j,nb + call wrf_error_fatal(msg) + else if( slope > 5. ) then + call wrf_message("-------------------------") + write(msg,'("WARNING: Large total lw optical depth of ",f8.2," at point i,j,nb=",3i5)') slope,i,j,nb + call wrf_message(msg) + + call wrf_message("Diagnostics 1: k, tauaerlw1, tauaerlw16") + do k=kts,kte + write(msg,'(i4,2f8.2)') k, tauaerlw1(i,k,j), tauaerlw16(i,k,j) + call wrf_message(msg) + end do + call wrf_message("-------------------------") + endif + enddo ! nb + endif ! aer_ra_feedback +#endif ! Call RRTMG longwave radiation model call rrtmg_lw & diff --git a/phys/module_ra_rrtmg_sw.F b/phys/module_ra_rrtmg_sw.F index 283e097c23..fb53a47b04 100644 --- a/phys/module_ra_rrtmg_sw.F +++ b/phys/module_ra_rrtmg_sw.F @@ -9579,6 +9579,13 @@ SUBROUTINE RRTMG_SWRAD( & qv3d, qc3d, qr3d, & qi3d, qs3d, qg3d, & f_qv, f_qc, f_qr, f_qi, f_qs, f_qg, & + tauaer300,tauaer400,tauaer600,tauaer999, & ! czhao + gaer300,gaer400,gaer600,gaer999, & ! czhao + waer300,waer400,waer600,waer999, & ! czhao + aer_ra_feedback, & +!jdfcz progn,prescribe, & + progn, & + qndrop3d,f_qndrop, & !czhao ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte, & @@ -9638,7 +9645,10 @@ SUBROUTINE RRTMG_SWRAD( & QR3D, & QI3D, & QS3D, & - QG3D + QG3D, & + QNDROP3D + + real pi,third,relconst,lwpmin,rhoh2o REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) , & OPTIONAL , & @@ -9647,7 +9657,29 @@ SUBROUTINE RRTMG_SWRAD( & F_RAIN_PHY LOGICAL, OPTIONAL, INTENT(IN) :: & - F_QV,F_QC,F_QR,F_QI,F_QS,F_QG + F_QV,F_QC,F_QR,F_QI,F_QS,F_QG,F_QNDROP + +! Optional + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), OPTIONAL , & + INTENT(IN ) :: tauaer300,tauaer400,tauaer600,tauaer999, & ! czhao + gaer300,gaer400,gaer600,gaer999, & ! czhao + waer300,waer400,waer600,waer999 ! czhao + + INTEGER, INTENT(IN ), OPTIONAL :: aer_ra_feedback +!jdfcz INTEGER, INTENT(IN ), OPTIONAL :: progn,prescribe + INTEGER, INTENT(IN ), OPTIONAL :: progn + + !wavelength corresponding to wavenum1 and wavenum2 (cm-1) + real, save :: wavemin(nbndsw) ! Min wavelength (um) of 14 intervals + data wavemin /3.077,2.500,2.150,1.942,1.626,1.299, & + 1.242,0.778,0.625,0.442,0.345,0.263,0.200,3.846/ + real, save :: wavemax(nbndsw) ! Max wavelength (um) of interval + data wavemax/3.846,3.077,2.500,2.150,1.942,1.626, & + 1.299,1.242,0.778,0.625,0.442,0.345,0.263,12.195/ + real wavemid(nbndsw) ! Mid wavelength (um) of interval + real, parameter :: thresh=1.e-9 + real ang,slope + character(len=200) :: msg ! Top of atmosphere and surface shortwave fluxes (W m-2) REAL, DIMENSION( ims:ime, jms:jme ), & @@ -9676,7 +9708,8 @@ SUBROUTINE RRTMG_SWRAD( & QR1D, & QI1D, & QS1D, & - QG1D + QG1D, & + qndrop1d ! Added local arrays for RRTMG integer :: ncol, & @@ -9815,6 +9848,26 @@ SUBROUTINE RRTMG_SWRAD( & LOGICAL :: predicate !------------------------------------------------------------------ +#ifdef WRF_CHEM + IF ( aer_ra_feedback == 1) then + IF ( .NOT. & + ( PRESENT(tauaer300) .AND. & + PRESENT(tauaer400) .AND. & + PRESENT(tauaer600) .AND. & + PRESENT(tauaer999) .AND. & + PRESENT(gaer300) .AND. & + PRESENT(gaer400) .AND. & + PRESENT(gaer600) .AND. & + PRESENT(gaer999) .AND. & + PRESENT(waer300) .AND. & + PRESENT(waer400) .AND. & + PRESENT(waer600) .AND. & + PRESENT(waer999) ) ) THEN + CALL wrf_error_fatal & + ('Warning: missing fields required for aerosol radiation' ) + ENDIF + ENDIF +#endif !-----CALCULATE SHORT WAVE RADIATION ! @@ -9861,6 +9914,7 @@ SUBROUTINE RRTMG_SWRAD( & QI1D(K)=0. QS1D(K)=0. CLDFRA1D(k)=0. + QNDROP1D(k)=0. ENDDO DO K=kts,kte @@ -9902,6 +9956,14 @@ SUBROUTINE RRTMG_SWRAD( & ENDIF ENDIF + IF ( PRESENT(F_QNDROP).AND.PRESENT(QNDROP3D)) THEN + IF (F_QNDROP) THEN + DO K=kts,kte + qndrop1d(K)=qndrop3d(I,K,J) + ENDDO + ENDIF + ENDIF + ! This logic is tortured because cannot test F_QI unless ! it is present, and order of evaluation of expressions ! is not specified in Fortran @@ -10108,11 +10170,56 @@ SUBROUTINE RRTMG_SWRAD( & cliqwp(ncol,k) = gliqwp / max(0.01,cldfrac(ncol,k)) ! In-cloud liquid water path. end do +!link the aerosol feedback to cloud -czhao + if( PRESENT( progn ) ) then + if (progn == 1) then +!jdfcz if(prescribe==0) then + + pi = 4.*atan(1.0) + third=1./3. + rhoh2o=1.e3 + relconst=3/(4.*pi*rhoh2o) +! minimun liquid water path to calculate rel +! corresponds to optical depth of 1.e-3 for radius 4 microns. + lwpmin=3.e-5 + do k = kts, kte + reliq(ncol,k) = 10. + if( PRESENT( F_QNDROP ) ) then + if( F_QNDROP ) then + if ( qc1d(k)*pdel(ncol,k).gt.lwpmin.and. & + qndrop1d(k).gt.1000. ) then + reliq(ncol,k)=(relconst*qc1d(k)/qndrop1d(k))**third ! effective radius in m +! apply scaling from Martin et al., JAS 51, 1830. + reliq(ncol,k)=1.1*reliq(ncol,k) + reliq(ncol,k)=reliq(ncol,k)*1.e6 ! convert from m to microns + reliq(ncol,k)=max(reliq(ncol,k),4.) + reliq(ncol,k)=min(reliq(ncol,k),20.) + end if + end if + end if + end do +!jdfcz else ! prescribe ! following Kiehl - call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) +! write(0,*) 'sw prescribe aerosol',maxval(qndrop3d) +!jdfcz endif + else ! progn + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + endif + else !progn + call relcalc(ncol, pcols, pver, tlay, landfrac, landm, icefrac, reliq, snowh) + endif ! following Kristjansson and Mitchell - call reicalc(ncol, pcols, pver, tlay, reice) + call reicalc(ncol, pcols, pver, tlay, reice) + + if (i==80.and.j==30) then +#if defined( DM_PARALLEL ) && ! defined( STUBMPI) + if( PRESENT( progn ) ) write(0,*) 'aerosol indirect',progn + write(0,*)'sw water eff radius',reliq(ncol,10),reliq(ncol,20),reliq(ncol,25) + write(0,*)'sw ice eff radius',reice(ncol,10),reice(ncol,20),reice(ncol,25) +#endif + endif ! Limit upper bound of reice for Fu ice parameterization and convert ! from effective radius to generalized effective size (*1.0315; Fu, 1996) @@ -10166,16 +10273,110 @@ SUBROUTINE RRTMG_SWRAD( & cldfmcl, ciwpmcl, clwpmcl, reicmcl, relqmcl, & taucmcl, ssacmcl, asmcmcl, fsfcmcl) -! Aerosol optical depth, single scattering albedo and asymmetry parameter +!-------------------------------------------------------------------------- +! Aerosol optical depth, single scattering albedo and asymmetry parameter -czhao 03/2010 +!-------------------------------------------------------------------------- ! by layer for each RRTMG shortwave band ! No aerosols in top layer above model top (kte+1). - do nb = 1, nbndsw - do k = kts, kte+1 - tauaer(ncol,k,nb) = 0. - ssaaer(ncol,k,nb) = 1. - asmaer(ncol,k,nb) = 0. - enddo - enddo +!cz do nb = 1, nbndsw +!cz do k = kts, kte+1 +!cz tauaer(ncol,k,nb) = 0. +!cz ssaaer(ncol,k,nb) = 1. +!cz asmaer(ncol,k,nb) = 0. +!cz enddo +!cz enddo + +! ... Aerosol effects. Added aerosol feedbacks from Chem , 03/2010 -czhao +! + do nb = 1, nbndsw + do k = kts,kte+1 + tauaer(ncol,k,nb) = 0. + ssaaer(ncol,k,nb) = 1. + asmaer(ncol,k,nb) = 0. + end do + end do + +#ifdef WRF_CHEM + IF ( AER_RA_FEEDBACK == 1) then + do nb = 1, nbndsw + wavemid(nb)=0.5*(wavemin(nb)+wavemax(nb)) ! um + do k = kts,kte !wig + +! convert optical properties at 300,400,600, and 999 to conform to the band wavelengths +! tauaer - use angstrom exponent + if(tauaer300(i,k,j).gt.thresh .and. tauaer999(i,k,j).gt.thresh) then + ang=alog(tauaer300(i,k,j)/tauaer999(i,k,j))/alog(999./300.) + tauaer(ncol,k,nb)=tauaer400(i,k,j)*(0.4/wavemid(nb))**ang + !tauaer(ncol,k,nb)=tauaer600(i,k,j)*(0.6/wavemid(nb))**ang + if (i==30.and.j==49.and.k==2.and.nb==12) then + write(0,*) 'TAU from 600 vs 400 in RRTMG',tauaer600(i,k,j),tauaer400(i,k,j) + print*, 'TAU from 600 vs 400 in RRTMG',tauaer600(i,k,j),tauaer400(i,k,j) + write(0,*) tauaer600(i,k,j)*(0.6/wavemid(nb))**ang,tauaer400(i,k,j)*(0.4/wavemid(nb))**ang + print*, tauaer600(i,k,j)*(0.6/wavemid(nb))**ang,tauaer400(i,k,j)*(0.4/wavemid(nb))**ang + endif +! ssa - linear interpolation; extrapolation + slope=(waer600(i,k,j)-waer400(i,k,j))/.2 + ssaaer(ncol,k,nb) = slope*(wavemid(nb)-.6)+waer600(i,k,j) + if(ssaaer(ncol,k,nb).lt.0.4) ssaaer(ncol,k,nb)=0.4 + if(ssaaer(ncol,k,nb).ge.1.0) ssaaer(ncol,k,nb)=1.0 +! g - linear interpolation;extrapolation + slope=(gaer600(i,k,j)-gaer400(i,k,j))/.2 + asmaer(ncol,k,nb) = slope*(wavemid(nb)-.6)+gaer600(i,k,j) ! notice reversed varaibles + if(asmaer(ncol,k,nb).lt.0.5) asmaer(ncol,k,nb)=0.5 + if(asmaer(ncol,k,nb).ge.1.0) asmaer(ncol,k,nb)=1.0 + endif + end do ! k + end do ! nb + +!wig beg + do nb = 1, nbndsw + slope = 0. !use slope as a sum holder + do k = kts,kte + slope = slope + tauaer(ncol,k,nb) + end do + if( slope < 0. ) then + write(msg,'("ERROR: Negative total optical depth of ",f8.2," at point i,j,nb=",3i5)') slope,i,j,nb + call wrf_error_fatal(msg) + else if( slope > 6. ) then + call wrf_message("-------------------------") + write(msg,'("WARNING: Large total sw optical depth of ",f8.2," at point i,j,nb=",3i5)') slope,i,j,nb + call wrf_message(msg) + + call wrf_message("Diagnostics 1: k, tauaer300, tauaer400, tauaer600, tauaer999, tauaer") + do k=kts,kte + write(msg,'(i4,5f8.2)') k, tauaer300(i,k,j), tauaer400(i,k,j), & + tauaer600(i,k,j), tauaer999(i,k,j),tauaer(ncol,k,nb) + call wrf_message(msg) + !czhao set an up-limit here to avoid segmentation fault + !from extreme AOD + tauaer(ncol,k,nb)=tauaer(ncol,k,nb)*6.0/slope + end do + + call wrf_message("Diagnostics 2: k, gaer300, gaer400, gaer600, gaer999") + do k=kts,kte + write(msg,'(i4,4f8.2)') k, gaer300(i,k,j), gaer400(i,k,j), & + gaer600(i,k,j), gaer999(i,k,j) + call wrf_message(msg) + end do + + call wrf_message("Diagnostics 3: k, waer300, waer400, waer600, waer999") + do k=kts,kte + write(msg,'(i4,4f8.2)') k, waer300(i,k,j), waer400(i,k,j), & + waer600(i,k,j), waer999(i,k,j) + call wrf_message(msg) + end do + + call wrf_message("Diagnostics 4: k, ssaal, asyal, taual") + do k=kts-1,kte + write(msg,'(i4,3f8.2)') k, ssaaer(i,k,nb), asmaer(i,k,nb), tauaer(i,k,nb) + call wrf_message(msg) + end do + call wrf_message("-------------------------") + endif + enddo ! nb + endif ! aer_ra_feedback +#endif + ! Zero array for input of aerosol optical thickness for use with ! ECMWF aerosol types (not used) diff --git a/phys/module_radiation_driver.F b/phys/module_radiation_driver.F index 743272b9a0..96606a1eaa 100644 --- a/phys/module_radiation_driver.F +++ b/phys/module_radiation_driver.F @@ -20,6 +20,8 @@ SUBROUTINE radiation_driver ( & ,LWCF,SWCF,OLR & ! Optional ,SWUPFLX,SWUPFLXC,SWDNFLX,SWDNFLXC & ! Optional ,LWUPFLX,LWUPFLXC,LWDNFLX,LWDNFLXC & ! Optional +!jdfcz ,progn,prescribe & ! Optional + ,progn & ! Optional ,GLW, GSW, SWDOWN, XLAT, XLONG, ALBEDO & ,EMISS, rho, p8w, p , pi , dz8w ,t, t8w, GMT & ,XLAND, XICE, TSK, HTOP,HBOT,HTOPR,HBOTR, CUPPT, VEGFRA, SNOW & @@ -47,9 +49,15 @@ SUBROUTINE radiation_driver ( & ,CLDFRA ,Pb & ,f_ice_phy,f_rain_phy & ,pm2_5_dry, pm2_5_water, pm2_5_dry_ec & + !aerosol shortwave ,tauaer300, tauaer400, tauaer600, tauaer999 & ! jcb ,gaer300, gaer400, gaer600, gaer999 & ! jcb ,waer300, waer400, waer600, waer999 & ! jcb + !aerosol longwave + ,tauaerlw1, tauaerlw2, tauaerlw3, tauaerlw4 & ! czhao + ,tauaerlw5, tauaerlw6, tauaerlw7, tauaerlw8 & ! czhao + ,tauaerlw9, tauaerlw10, tauaerlw11, tauaerlw12 & ! czhao + ,tauaerlw13, tauaerlw14, tauaerlw15, tauaerlw16 & ! czhao ,qc_adjust ,qi_adjust & ! jm ,cu_rad_feedback, aer_ra_feedback & ! jm ,ht,dx,dy,shadowmask,slope_rad ,topo_shading & ! slope-dependent radiation @@ -321,10 +329,18 @@ SUBROUTINE radiation_driver ( & waer300,waer400,waer600,waer999, & ! jcb qc_adjust, qi_adjust + REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), OPTIONAL , & + INTENT(IN ) :: tauaerlw1,tauaerlw2,tauaerlw3,tauaerlw4, & ! czhao + tauaerlw5,tauaerlw6,tauaerlw7,tauaerlw8, & ! czhao + tauaerlw9,tauaerlw10,tauaerlw11,tauaerlw12, & ! czhao + tauaerlw13,tauaerlw14,tauaerlw15,tauaerlw16 + LOGICAL, OPTIONAL :: cu_rad_feedback INTEGER, INTENT(IN ), OPTIONAL :: aer_ra_feedback +!jdfcz INTEGER, OPTIONAL, INTENT(IN ) :: progn,prescribe + INTEGER, OPTIONAL, INTENT(IN ) :: progn ! ! variables for aerosols (only if running with chemistry) ! @@ -869,6 +885,15 @@ SUBROUTINE radiation_driver ( & CASE (CAMLWSCHEME) CALL wrf_debug(100, 'CALL camrad lw') + + IF ( PRESENT( OZMIXM ) ) print *, ' OZMIXM present ' + IF ( PRESENT( PIN ) ) print *, ' PIN present ' + IF ( PRESENT( M_PS_1 ) ) print *, ' M_PS_1 present ' + IF ( PRESENT( M_PS_2 ) ) print *, ' M_PS_2 present ' + IF ( PRESENT( M_HYBI0 ) ) print *, ' M_HYBI0 present ' + IF ( PRESENT( AEROSOLC_1 ) ) print *, ' AEROSOLC_1 present ' + IF ( PRESENT( AEROSOLC_2 ) ) print *, ' AEROSOLC_2 present ' + IF ( PRESENT( OZMIXM ) .AND. PRESENT( PIN ) .AND. & PRESENT(M_PS_1) .AND. PRESENT(M_PS_2) .AND. & PRESENT(M_HYBI0) .AND. PRESENT(AEROSOLC_1) & @@ -937,6 +962,20 @@ SUBROUTINE radiation_driver ( & QI3D=QI,QS3D=QS,QG3D=QG, & F_QV=F_QV,F_QC=F_QC,F_QR=F_QR, & F_QI=F_QI,F_QS=F_QS,F_QG=F_QG, & +#ifdef WRF_CHEM + TAUAERLW1=tauaerlw1,TAUAERLW2=tauaerlw2, & ! jcb + TAUAERLW3=tauaerlw3,TAUAERLW4=tauaerlw4, & ! jcb + TAUAERLW5=tauaerlw5,TAUAERLW6=tauaerlw6, & ! jcb + TAUAERLW7=tauaerlw7,TAUAERLW8=tauaerlw8, & ! jcb + TAUAERLW9=tauaerlw9,TAUAERLW10=tauaerlw10, & ! jcb + TAUAERLW11=tauaerlw11,TAUAERLW12=tauaerlw12, & ! jcb + TAUAERLW13=tauaerlw13,TAUAERLW14=tauaerlw14, & ! jcb + TAUAERLW15=tauaerlw15,TAUAERLW16=tauaerlw16, & ! jcb + aer_ra_feedback=aer_ra_feedback, & +!jdfcz progn=progn,prescribe=prescribe, & + progn=progn, & +#endif + QNDROP3D=qndrop,F_QNDROP=f_qndrop, & IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde,& IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme,& ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte,& @@ -1200,6 +1239,18 @@ SUBROUTINE radiation_driver ( & QI3D=qi,QS3D=qs,QG3D=qg, & F_QV=f_qv,F_QC=f_qc,F_QR=f_qr, & F_QI=f_qi,F_QS=f_qs,F_QG=f_qg, & +#ifdef WRF_CHEM + TAUAER300=tauaer300,TAUAER400=tauaer400, & ! jcb + TAUAER600=tauaer600,TAUAER999=tauaer999, & ! jcb + GAER300=gaer300,GAER400=gaer400, & ! jcb + GAER600=gaer600,GAER999=gaer999, & ! jcb + WAER300=waer300,WAER400=waer400, & ! jcb + WAER600=waer600,WAER999=waer999, & ! jcb + aer_ra_feedback=aer_ra_feedback, & +!jdfcz progn=progn,prescribe=prescribe, & + progn=progn, & +#endif + QNDROP3D=qndrop,F_QNDROP=f_qndrop, & IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde,& IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme,& ITS=its,ITE=ite, JTS=jts,JTE=jte, KTS=kts,KTE=kte,& diff --git a/tools/gen_args.c b/tools/gen_args.c index e0dd09404d..ea995d4230 100644 --- a/tools/gen_args.c +++ b/tools/gen_args.c @@ -56,7 +56,8 @@ gen_args ( char * dirname , int sw ) char * fn = "_args.inc" ; char * p ; int linelen ; - char outstr[64*4096] ; + /* Had to increase size for SOA from 64*4096 to 64*7000 */ + char outstr[64*7000] ; if ( dirname == NULL ) return(1) ; if ( strlen(dirname) > 0 ) diff --git a/tools/gen_interp.c b/tools/gen_interp.c index 00391fe455..82404a0c5d 100644 --- a/tools/gen_interp.c +++ b/tools/gen_interp.c @@ -43,7 +43,8 @@ int contains_tok( char *s1, char *s2, char *delims ) } -char halo_define[4*4096], halo_use[NAMELEN], halo_id[NAMELEN], x[NAMELEN] ; + /* Had to increase size for SOA from 4*4096 to 4*7000 */ +char halo_define[4*7000], halo_use[NAMELEN], halo_id[NAMELEN], x[NAMELEN] ; int gen_nest_interp ( char * dirname ) diff --git a/tools/gen_scalar_derefs.c b/tools/gen_scalar_derefs.c index 9db2e51dec..9f813eb3c0 100644 --- a/tools/gen_scalar_derefs.c +++ b/tools/gen_scalar_derefs.c @@ -30,7 +30,8 @@ scalar_derefs ( char * dirname ) char * fn = "scalar_derefs.inc" ; char * p ; int linelen ; - char outstr[64*4096] ; + /* Had to increase size for SOA from 64*4096 to 64*7000, Manish Shrivastava 2010 */ + char outstr[64*7000] ; if ( dirname == NULL ) return(1) ; if ( strlen(dirname) > 0 ) diff --git a/tools/misc.c b/tools/misc.c index d66cae7d19..a440c9fa95 100644 --- a/tools/misc.c +++ b/tools/misc.c @@ -426,7 +426,8 @@ int make_entries_uniq ( char * fname ) { char tempfile[NAMELEN] ; - char commline[4096] ; + /* Had to increase size for SOA from 4096 to 7000 */ + char commline[7000] ; sprintf(tempfile,"regtmp1%d",getpid()) ; sprintf(commline,"%s < %s > %s ; %s %s %s ", UNIQSORT,fname,tempfile, @@ -440,7 +441,8 @@ add_warning ( char * fname ) FILE * fp ; char tempfile[NAMELEN] ; char tempfile1[NAMELEN] ; - char commline[4096] ; + /* Had to increase size for SOA from 4096 to 7000 */ + char commline[7000] ; sprintf(tempfile,"regtmp1%d",getpid()) ; sprintf(tempfile1,"regtmp2%d",getpid()) ; if (( fp = fopen( tempfile, "w" )) == NULL ) return(1) ; diff --git a/tools/reg_parse.c b/tools/reg_parse.c index 232bf008a9..24d6a246fc 100644 --- a/tools/reg_parse.c +++ b/tools/reg_parse.c @@ -15,7 +15,7 @@ /* read in the Registry file and build the internal representation of the registry */ -#define MAXTOKENS 1000 +#define MAXTOKENS 5000 /*changed MAXTOKENS from 1000 to 5000 by Manish Shrivastava on 01/28/2010*/ /* fields for state entries (note, these get converted to field entries in the reg_parse routine; therefore, only TABLE needs to be looked at */ @@ -90,12 +90,13 @@ static char tracers[1000][100] ; int pre_parse( char * dir, FILE * infile, FILE * outfile ) { - char inln[8192], parseline[8192], parseline_save[8192] ; + /* Decreased size for SOA from 8192 to 8000--double check if necessary, Manish Shrivastava 2010 */ + char inln[8000], parseline[8000], parseline_save[8000] ; int found ; char *p, *q ; - char *tokens[MAXTOKENS], *toktmp[MAXTOKENS], newdims[NAMELEN], newdims4d[NAMELEN],newname[NAMELEN] ; + char *tokens[MAXTOKENS], *toktmp[MAXTOKENS], newdims[NAMELEN_LONG], newdims4d[NAMELEN_LONG],newname[NAMELEN_LONG] ; int i, ii, len_of_tok ; - char x, xstr[NAMELEN] ; + char x, xstr[NAMELEN_LONG] ; int is4d, wantstend, wantsbdy ; int ifdef_stack_ptr = 0 ; int ifdef_stack[100] ; @@ -106,7 +107,8 @@ pre_parse( char * dir, FILE * infile, FILE * outfile ) parseline[0] = '\0' ; /* main parse loop over registry lines */ - while ( fgets ( inln , 4096 , infile ) != NULL ) + /* Had to increase size for SOA from 4096 to 7000, Manish Shrivastava 2010 */ + while ( fgets ( inln , 7000 , infile ) != NULL ) { /*** preprocessing directives ****/ @@ -300,7 +302,8 @@ pre_parse( char * dir, FILE * infile, FILE * outfile ) int reg_parse( FILE * infile ) { - char inln[4096], parseline[4096] ; + /* Had to increase size for SOA from 4096 to 7000, Manish Shrivastava 2010 */ + char inln[7000], parseline[7000] ; char *p, *q ; char *tokens[MAXTOKENS], *toktmp[MAXTOKENS] ; int i, ii ; @@ -311,7 +314,8 @@ reg_parse( FILE * infile ) max_time_level = 1 ; /* main parse loop over registry lines */ - while ( fgets ( inln , 4096 , infile ) != NULL ) +/* Had to increase size for SOA from 4096 to 7000, Manish Shrivastava 2010 */ + while ( fgets ( inln , 7000 , infile ) != NULL ) { strcat( parseline , inln ) ; /* allow \ to continue the end of a line */ diff --git a/tools/registry.h b/tools/registry.h index a109a07aa9..6cdd4df7a3 100644 --- a/tools/registry.h +++ b/tools/registry.h @@ -1,6 +1,6 @@ #ifndef REGISTRY_H #define NAMELEN 512 -#define NAMELEN_LONG 8192 +#define NAMELEN_LONG 12500 /*changed from 8192 to 12500 by PNNL on 12/22/2010*/ #define MAXDIMS 21 #define MAX_DYNCORES 50 /* ha ha, just kidding */ /* #define MAX_ARGLINE 175 WRF uses 128 by default, but the nested chem version hit the continuation line limit for efc so it had to be increased, wig 14-Oct-2004 */