diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 889a92854b..fa22f93a1b 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -323,7 +323,7 @@ state real xkmv_meso ikj dyn_em 1 - - "XK # Pressure and Density state real p ikj dyn_em 1 - irh "p" "perturbation pressure" "Pa" state real al ikj dyn_em 1 - ir "al" "inverse perturbation density" "m3 kg-1" -state real alt ikj dyn_em 1 - r "alt" "inverse density" "m3 kg-1" +state real alt ikj dyn_em 1 - rh "alt" "inverse density" "m3 kg-1" state real alb ikj dyn_em 1 - irdus "alb" "inverse base density" "m3 kg-1" state real zx ikj dyn_em 1 XZ - " " " " " " state real zy ikj dyn_em 1 YZ - " " " " " " diff --git a/Registry/registry.chem b/Registry/registry.chem index 70586eae72..ecd711a3db 100644 --- a/Registry/registry.chem +++ b/Registry/registry.chem @@ -1,10 +1,10 @@ rconfig integer gsfcrad_gocart_coupling namelist,chem 1 2 rconfig integer gsfcgce_gocart_coupling namelist,chem 1 2 -state real AOD_OUT ikj misc 1 - h "AOD_OUT" "Aerosol Optical Depth" " " -state real AOD2D_OUT ij misc 1 - h "AOD2D_OUT" "Aerosol Optical Depth, 2d" " " -state real ATOP2D_OUT ij misc 1 - h "ATOP2D_OUT" "Aerosol Optical Depth, top" " " -state real ICN_DIAG ikj misc 1 - h "ICN_DIAG" "Some chem thing, ICN_DIAG" " " -state real NC_DIAG ikj misc 1 - h "NC_DIAG" "Some chem thing, NC_DIAG" " " +state real AOD_OUT ikj misc 1 - - "AOD_OUT" "Aerosol Optical Depth" " " +state real AOD2D_OUT ij misc 1 - - "AOD2D_OUT" "Aerosol Optical Depth, 2d" " " +state real ATOP2D_OUT ij misc 1 - - "ATOP2D_OUT" "Aerosol Optical Depth, top" " " +state real ICN_DIAG ikj misc 1 - - "ICN_DIAG" "Some chem thing, ICN_DIAG" " " +state real NC_DIAG ikj misc 1 - - "NC_DIAG" "Some chem thing, NC_DIAG" " " # Chemistry Variables (all shared at this point) #----------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -53,6 +53,7 @@ state integer last_chem_time_second - misc - - r "la # state integer emissframes - - - - - "emissframes" "" "" state integer fireemissframes - - - - - "fireemissframes" "" "" +state integer ohframes - - - - - "ohframes" "" "" # # Rain, evaporation rates # @@ -208,7 +209,7 @@ state real dustload_2 ij misc 1 - r "dus state real dustload_3 ij misc 1 - r "dustload_3" "dust loading for size 3" "ug/m2" state real dustload_4 ij misc 1 - r "dustload_4" "dust loading for size 4" "ug/m2" state real dustload_5 ij misc 1 - r "dustload_5" "dust loading for size 5" "ug/m2" -state real depvelocity ij misc 1 - rh "drydepvel" "dust dry deposition velocity " "m/s" +state real depvelocity ij misc 1 - r "drydepvel" "dust dry deposition velocity " "m/s" state real setvel_1 ij misc 1 - r "setvel_1" "dust gravitational settling velocity for size 1" "m/s" state real setvel_2 ij misc 1 - r "setvel_2" "dust gravitational settling velocity for size 2" "m/s" state real setvel_3 ij misc 1 - r "setvel_3" "dust gravitational settling velocity for size 3" "m/s" @@ -275,6 +276,24 @@ state real e_rco_oh i+jf emis_ant 1 Z i5r state real e_co2tst i+jf emis_ant 1 Z i5 "E_CO2TST" "Anthropogenic CO2 test fluxes" "mol km^-2 hr^-1" state real e_cotst i+jf emis_ant 1 Z i5 "E_COTST" "Anthropogenic CO test fluxes" "mol km^-2 hr^-1" state real e_ch4tst i+jf emis_ant 1 Z i5 "E_CH4TST" "Anthropogenic CH4 test fluxes" "mol km^-2 hr^-1" +state real e_ch4ong i+jf emis_ant 1 Z i5r "E_CH4ONG" "Oil and gas CH4 emissions" "mol km^-2 hr^-1" +state real e_ch4agr i+jf emis_ant 1 Z i5r "E_CH4AGR" "Agricultural CH4 missions" "mol km^-2 hr^-1" +state real e_ch4wst i+jf emis_ant 1 Z i5r "E_CH4WST" "Waste CH4 emissions" "mol km^-2 hr^-1" +state real e_ch4wet i+jf emis_ant 1 Z i5r "E_CH4WET" "Wetland CH4 emissions" "mol km^-2 hr^-1" +state real e_ch4nat i+jf emis_ant 1 Z i5r "E_CH4NAT" "Natural CH4 emissions" "mol km^-2 hr^-1" +state real e_c13tst i+jf emis_ant 1 Z i5r "E_C13TST" "Anthropoenic C13 test fluxes" "mol km^-2 hr^-1" +state real e_c13ong i+jf emis_ant 1 Z i5r "E_C13ONG" "Oil and gas C13 emissions" "mol km^-2 hr^-1" +state real e_c13agr i+jf emis_ant 1 Z i5r "E_C13AGR" "Agricultural C13 missions" "mol km^-2 hr^-1" +state real e_c13wst i+jf emis_ant 1 Z i5r "E_C13WST" "Waste C13 emissions" "mol km^-2 hr^-1" +state real e_c13wet i+jf emis_ant 1 Z i5r "E_C13WET" "Wetland C13 emissions" "mol km^-2 hr^-1" +state real e_c13nat i+jf emis_ant 1 Z i5r "E_C13NAT" "Natural C13 emissions" "mol km^-2 hr^-1" +state real e_c13ant i+jf emis_ant 1 Z i5r "E_C13ANT" "Anthropogenic C13 emissions" "mol km^-2 hr^-1" +state real e_ethnat i+jf emis_ant 1 Z i5r "E_ETHNAT" "Natural C2H6 emissions" "mol km^-2 hr^-1" +state real e_ethong i+jf emis_ant 1 Z i5r "E_ETHONG" "Oil and gas C2H6 emissions" "mol km^-2 hr^-1" +state real e_ethtst i+jf emis_ant 1 Z i5r "E_ETHTST" "Anthropoenic C2H6 test fluxes" "mol km^-2 hr^-1" + + + # GHG emission variables state real - ivjf eghg_bio - - - - "All biospheric GHG fluxes " "" @@ -416,6 +435,7 @@ state real ebu_xylenes ikjf ebu 1 Z - "eb # CH4 biomass burning emissions state real ebu_ch4 ikjf ebu 1 Z h "ebu_ch4" "biomass burning emiss" "mol km^-2 hr^-1" +state real ebu_c13 ikjf ebu 1 Z h "ebu_c13" "biomass burning emiss" "mol km^-2 hr^-1" # additional arrays needed for biomass burning emissions input state real - i]jf ebu_in - - - - "Biomass burnung input " "" @@ -488,6 +508,7 @@ state real ebu_in_xylenes i]jf ebu_in 1 - i07 # additional array for ch4 bbm emission state real ebu_in_ch4 i]jf ebu_in 1 - i07 "ebu_in_ch4" "EMISSIONS" "mol km^-2 hr^-1" +state real ebu_in_c13 i]jf ebu_in 1 - i07 "ebu_in_c13" "EMISSIONS" "mol km^-2 hr^-1" # state real mean_fct_agtf ij misc 1 - i07h "mean_fct_agtf" "mean fraction of tropical forest" "?" state real mean_fct_agef ij misc 1 - i07h "mean_fct_agef" "mean fraction of extra tropical forest" "?" @@ -550,7 +571,7 @@ state real asympar55 ikjf asym_par 1 Z - "ASYM state real asympar106 ikjf asym_par 1 Z - "ASYMPAR106" "assymetry parameter for 1.06um" "?" #for dep outputs -state real ddlen ijo misc 1 Z rh "DRY_DEP_LEN" "dry deposition velocity" "cm/s" +state real ddlen ijo misc 1 Z r "DRY_DEP_LEN" "dry deposition velocity" "cm/s" state real ddflx ijo misc 1 Z r "DRY_DEP_FLUX" "dry deposition flux" "mol or ug m^-2" state real wdflx ijo misc 1 Z r "WET_DEP_FLUX" "column wet scavening flux" "mmol or ug m^-2" @@ -575,9 +596,9 @@ state real noag_grow ij misc 1 - i06r "noa state real noag_nongrow ij misc 1 - i06r "noag_nongrow" "Reference biog emiss" "mol km^-2 hr^-1" state real nononag ij misc 1 - i06r "nononag" "Reference biog emiss" "mol km^-2 hr^-1" state real slai ij misc 1 - i06r "slai" "Leaf area index isop" "" -state real ebio_iso ij misc 1 - rh "EBIO_ISO" "Actual biog emiss" "mol km^-2 hr^-1" +state real ebio_iso ij misc 1 - r "EBIO_ISO" "Actual biog emiss" "mol km^-2 hr^-1" state real ebio_oli ij misc 1 - r "ebio_oli" "Actual biog emiss" "mol km^-2 hr^-1" -state real ebio_api ij misc 1 - rh "ebio_api" "Actual biog emiss" "mol km^-2 hr^-1" +state real ebio_api ij misc 1 - r "ebio_api" "Actual biog emiss" "mol km^-2 hr^-1" state real ebio_lim ij misc 1 - r "ebio_lim" "Actual biog emiss" "mol km^-2 hr^-1" state real ebio_xyl ij misc 1 - r "ebio_xyl" "Actual biog emiss" "mol km^-2 hr^-1" state real ebio_hc3 ij misc 1 - r "ebio_hc3" "Actual biog emiss" "mol km^-2 hr^-1" @@ -763,7 +784,7 @@ state real advz_ho2 ikjf advz_ct 1 - r "advz_ho2" "ACCUMULAT # deposition velocities for diagnostic package, feel free to add if you like! # state real - i%jf dvel - - - - "deposition velocities" "" -state real dvel_o3 i%jf dvel 1 - rh "dvel_o3" "O3 deposition velocity " "cm/s" +state real dvel_o3 i%jf dvel 1 - - "dvel_o3" "O3 deposition velocity " "cm/s" state real dvel_no i%jf dvel 1 - - "dvel_no" "NO deposition velocity " "cm/s" state real dvel_no2 i%jf dvel 1 - - "dvel_no2" "NO2 deposition velocity " "cm/s" state real dvel_nh3 i%jf dvel 1 - - "dvel_nh3" "NH3 deposition velocity " "cm/s" @@ -867,12 +888,12 @@ state real ddmass_cvbsoa3 i%jf dvel 1 - rdu " state real ddmass_cvbsoa4 i%jf dvel 1 - rdu "ddmass_cvbsoa4" "CVBSOA4 dry deposition, accumulated" "mol/m2" #CB05/VBS/SORG -state real ddmass_so4aj i%jf dvel 1 - rhdu "ddmass_so4aj" "so4aj dry deposition, accumulated" "ug/m2" -state real ddmass_so4ai i%jf dvel 1 - rhdu "ddmass_so4ai" "so4ai dry deposition, accumulated" "ug/m2" -state real ddmass_no3aj i%jf dvel 1 - rhdu "ddmass_no3aj" "no3aj dry deposition, accumulated" "ug/m2" -state real ddmass_no3ai i%jf dvel 1 - rhdu "ddmass_no3ai" "no3ai dry deposition, accumulated" "ug/m2" -state real ddmass_nh4aj i%jf dvel 1 - rhdu "ddmass_nh4aj" "nh4aj dry deposition, accumulated" "ug/m2" -state real ddmass_nh4ai i%jf dvel 1 - rhdu "ddmass_nh4ai" "nh4ai dry deposition, accumulated" "ug/m2" +state real ddmass_so4aj i%jf dvel 1 - rdu "ddmass_so4aj" "so4aj dry deposition, accumulated" "ug/m2" +state real ddmass_so4ai i%jf dvel 1 - rdu "ddmass_so4ai" "so4ai dry deposition, accumulated" "ug/m2" +state real ddmass_no3aj i%jf dvel 1 - rdu "ddmass_no3aj" "no3aj dry deposition, accumulated" "ug/m2" +state real ddmass_no3ai i%jf dvel 1 - rdu "ddmass_no3ai" "no3ai dry deposition, accumulated" "ug/m2" +state real ddmass_nh4aj i%jf dvel 1 - rdu "ddmass_nh4aj" "nh4aj dry deposition, accumulated" "ug/m2" +state real ddmass_nh4ai i%jf dvel 1 - rdu "ddmass_nh4ai" "nh4ai dry deposition, accumulated" "ug/m2" state real ddmass_so4_a01 i%jf dvel 1 - rdu "ddmass_so4_a01" "so4_a01 dry deposition, accumulated" "ug/m2" state real ddmass_no3_a01 i%jf dvel 1 - rdu "ddmass_no3_a01" "no3_a01 dry deposition, accumulated" "ug/m2" @@ -1122,10 +1143,10 @@ state real wd_cvbsoa_cu ij misc 1 - rdu # aerosol stuff state real aerwrf ikj misc 1 - r "AERWRF" "STANDARD AEROSOL PROFILE" "?" -state real pm2_5_dry ikj misc 1 - rh "PM2_5_DRY" "pm2.5 aerosol dry mass" "ug m^-3" +state real pm2_5_dry ikj misc 1 - r "PM2_5_DRY" "pm2.5 aerosol dry mass" "ug m^-3" state real pm2_5_dry_ec ikj misc 1 - - "PM2_5_EC_DRY" "dry ec aerosol mass" "ug m^-3" state real pm2_5_water ikj misc 1 - - "PM2_5_WATER" "pm2.5 aerosol liquid water content" "ug m^-3" -state real pm10 ikj misc 1 - h "pm10 " "pm10 dry mass" "ug m^-3" +state real pm10 ikj misc 1 - r "pm10 " "pm10 dry mass" "ug m^-3" 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 " "" "?" @@ -1136,7 +1157,7 @@ state real bsoa ikj misc 1 - r "BSO state real asoa ikj misc 1 - r "ASOA" "asoa dry mass" "ug m^-3" # 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" +state real dms_0 ij misc 1 - i08r "DMS_0 " "dms oceanic concentrations" "nM/L" #Diagnostic Aerosol species state real hoa_a01 ikj misc 1 - - "hoa_a01" "hoa_a01" "ug m^-3" @@ -1314,9 +1335,9 @@ state real asmpsoa_a03 ikj misc 1 - - state real asmpsoa_a04 ikj misc 1 - - "asmpsoa_a04" "asmpsoa_a04" "ug m^-3" # photolysis rates -state real ph_o31d ikj misc 1 - rh "PHOTR2" "O31D Photolysis Rate" "min{-1}" +state real ph_o31d ikj misc 1 - r "PHOTR2" "O31D Photolysis Rate" "min{-1}" state real ph_o33p ikj misc 1 - r "PHOTR3" "O33P Photolysis Rate" "min{-1}" -state real ph_no2 ikj misc 1 - rh "PHOTR4" "NO2 Photolysis Rate" "min{-1}" +state real ph_no2 ikj misc 1 - r "PHOTR4" "NO2 Photolysis Rate" "min{-1}" state real ph_no3o2 ikj misc 1 - r "PHOTR5" "NO3O2 Photolysis Rate" "min{-1}" state real ph_no3o ikj misc 1 - r "PHOTR6" "NO3O Photolysis Rate" "min{-1}" state real ph_hno2 ikj misc 1 - r "PHOTR7" "HNO2 Photolysis Rate" "min{-1}" @@ -1496,8 +1517,8 @@ state real cvapi1 ikj misc 1 - r "cv state real cvapi2 ikj misc 1 - r "cvapi2" "cond.vapor from biogenics" "?" state real cvlim1 ikj misc 1 - r "cvlim1" "cond.vapor from biogenics" "?" state real cvlim2 ikj misc 1 - r "cvlim2" "cond.vapor from biogenics" "?" -state real snu ikj misc 1 - rh "snu" "2nd moment Aitken mode" "m2 m-3" -state real sac ikj misc 1 - rh "sac" "2nd moment Aitken mode" "m2 m-3" +state real snu ikj misc 1 - r "snu" "2nd moment Aitken mode" "m2 m-3" +state real sac ikj misc 1 - r "sac" "2nd moment Aitken mode" "m2 m-3" # non-transported radical species for RACM state real addt ikj misc 1 - r "addt" "Radicals" "ppm" state real addx ikj misc 1 - r "addx" "Radicals" "ppm" @@ -2151,6 +2172,35 @@ state real ch4_ant ikjftb chem 1 - i0{12}rhusdf=(b state real ch4_bbu ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_BBU" "mixing ratio of biomass burning CH4" "ppmv" state real ch4_bck ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_BCK" "mixing ratio of background CH4" "ppmv" state real ch4_tst ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_TST" "mixing ratio of CH4, test fluxes" "ppmv" + +# Chem Scalars for methane tagged tracers used in the GHG option +state real ch4_wet ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_WET" "mixing ratio of wetland CH4" "ppmv" +state real ch4_ong ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_ONG" "mixing ratio of oil and gas CH4" "ppmv" +state real ch4_agr ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_AGR" "mixing ratio of agricultural CH4" "ppmv" +state real ch4_wst ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "CH4_WST" "mixing ratio of waste CH4" "ppmv" + +# Chem Scalars for methane isotope C13 used in the GHG option +state real c13_ant ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_ANT" "mixing ratio of anthropogenic C13" "ppmv" +state real c13_bio ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_BIO" "mixing ratio of natural biogenic C13" "ppmv" +state real c13_bbu ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_BBU" "mixing ratio of biomass burning C13" "ppmv" +state real c13_wet ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_WET" "mixing ratio of wetland C13" "ppmv" +state real c13_ong ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_ONG" "mixing ratio of oil and gas C13" "ppmv" +state real c13_agr ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_AGR" "mixing ratio of agricultural C13" "ppmv" +state real c13_wst ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_WST" "mixing ratio of waste C13" "ppmv" +state real c13_tst ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_TST" "mixing ratio of C13, test flux" "ppmv" +state real c13_bck ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "C13_BCK" "mixing ratio of background C13" "ppmv" + +# Chem Scalars for C2H6 used in the GHG options +state real eth_bck ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_BCK" "mixing ratio of background C2H6" "ppmv" +state real eth_ant ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_ANT" "mixing ratio of anthropogenic C2H6" "ppmv" +state real eth_bbu ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_BBU" "mixing ratio of biomass burning C2H6" "ppmv" +state real eth_tst ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_TST" "mixing ratio of C2H6, test fluxes" "ppmv" +state real eth_bio ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_BIO" "mixing ratio of biogenic C2H6" "ppmv" +state real eth_ong ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "ETH_ONG" "mixing ratio of oil and gas C2H6" "ppmv" + + +# Input for GHG-ISOTOPE: prescribed OH levels +state real ghg_oh ikj misc 1 - i0{18}rh "GHG_OH" "Prescribed OH for ghg-isotope option" "ppmv" state real pv ikj misc 1 - h "PV" "Potential Vorticity" "pvu" #SAPRCNOV additional variables, automatically created using diff_mechanisSpc_wrfRegistry.m script (pablo-saide@uiowa.edu) @@ -2343,10 +2393,10 @@ state real mgaj ikjftb chem 1 - i0{12}rhusdf=(bdy_i state real mgai ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "mgai" "Magnesium conc. Aitken mode" "ug/kg-dryair" # # parameters for the N2O5 uptake process in RACM_SOA_VBS mechanism -state real gamn2o5 ikj misc 1 - rh "gamn2o5" "n2o5 uptake by aerosol" "numerical value" -state real cn2o5 ikj misc 1 - rh "cn2o5" "n2o5 velocity" "m/s" -state real kn2o5 ikj misc 1 - rh "kn2o5" "n2o5 het reaction rate" "s-1" -state real yclno2 ikj misc 1 - rh "yclno2" "clno2 yield from n2o5 het" "numerical value" +state real gamn2o5 ikj misc 1 - r "gamn2o5" "n2o5 uptake by aerosol" "numerical value" +state real cn2o5 ikj misc 1 - r "cn2o5" "n2o5 velocity" "m/s" +state real kn2o5 ikj misc 1 - r "kn2o5" "n2o5 het reaction rate" "s-1" +state real yclno2 ikj misc 1 - r "yclno2" "clno2 yield from n2o5 het" "numerical value" # # #cloud-phase aerosol state real so4cwj ikjftb chem 1 - i0{12}rhusdf=(bdy_interp:dt) "so4cwj" "Sulfate conc. Acc. mode in cloud" "ug/kg-dryair" @@ -3754,6 +3804,10 @@ state integer STEPCHEM - misc 1 - r "ST state integer STEPFIREPL - misc 1 - r "STEPFIREPL" "NUMBER OF FUNDAMENTAL TIMESTEPS BETWEEN CALLSTO PLUMERISE FIRE ROUTINE" "NA" +#JianHe: ch4-oh loss +# option for ch4-oh loss in ghg option +rconfig integer ghg_sink namelist,chem 1 0 rh "ghg_sink" "calculate methane sinks" "" + # rconfig character emi_inname namelist,chem 1 "wrfchemi_d_" - "name of chem emissions infile" "" "" rconfig character fireemi_inname namelist,chem 1 "wrffirechemi_d_" - "name of chem fire emissions infile" "" "" @@ -3761,6 +3815,7 @@ rconfig character input_chem_inname namelist,chem 1 "wrf_che rconfig character emi_outname namelist,chem 1 "wrfchemi_d_" - "name of chem emissions outfile" "" "" rconfig character fireemi_outname namelist,chem 1 "wrffirechemi_out_d_" - "name of chem fire emissions outfile" "" "" rconfig character input_chem_outname namelist,chem 1 "wrf_chem_input_d_" - "name of chem outfile" "" "" +rconfig character ghgoh_inname namelist,chem 1 "wrfohinp_d_" - "name of chem oh infile" "" "" rconfig integer io_style_emissions namelist,chem 1 1 - "io_style_emissions" "" "" rconfig real BIOEMDT namelist,chem max_domains 0 h "BIOEMDT" "" "" rconfig real PHOTDT namelist,chem max_domains 0 h "PHOTDT" "" "" @@ -3928,6 +3983,8 @@ package chem_trace_ens chem_opt==15 - chem:tracer_1 # GHG chem packages, passive tracers package co2_tracer chem_opt==16 - chem:co2_ant,co2_bio,co2_oce,co2_bck,co2_tst,co_ant,co_bck package ghg_tracer chem_opt==17 - chem:co2_ant,co2_bio,co2_oce,co2_bck,co2_tst,co2_bbu,co_ant,co_bck,co_bbu,co_tst,ch4_ant,ch4_bio,ch4_bck,ch4_bbu,ch4_tst +#JianHe: include new ghg option, ch4_bio only includes ocean and termites. +package ghg_isotope chem_opt==18 - chem:eth_ant,eth_bio,eth_bck,eth_ong,eth_tst,eth_bbu,ch4_ant,ch4_bio,ch4_bck,ch4_bbu,ch4_tst,ch4_ong,ch4_agr,ch4_wst,ch4_wet,c13_ant,c13_bio,c13_bck,c13_bbu,c13_tst,c13_ong,c13_agr,c13_wst,c13_wet 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 @@ -4055,6 +4112,7 @@ package ecb05_opt2 emiss_opt==15 - emis_ant # Anthropogenic CO2, CO and CH4 emissions: package eco2 emiss_opt==16 - emis_ant:e_co2,e_co2tst,e_co package eghg emiss_opt==17 - emis_ant:e_co2,e_co2tst,e_co,e_cotst,e_ch4,e_ch4tst +package eghg2 emiss_opt==18 - emis_ant:e_eth,e_ethnat,e_ethong,e_ethtst,e_ch4,e_ch4tst,e_ch4ong,e_ch4agr,e_ch4wst,e_ch4wet,e_ch4nat,e_c13ant,e_c13tst,e_c13ong,e_c13agr,e_c13wst,e_c13wet,e_c13nat package ecrimech emiss_opt==19 - emis_ant:e_co,e_no,e_no2,e_so2,e_nh3,e_c2h6,e_c3h8,e_c2h4,e_c3h6,e_c5h8,e_tm123b,e_tm124b,e_tm135b,e_oethtol,e_methtol,e_pethtol,e_dime35eb,e_hcho,e_ch3cho,e_c2h5cho,e_ket,e_mek,e_ch3oh,e_c2h5oh,e_c2h2,e_benzene,e_nc4h10,e_toluene,e_oxyl,e_tbut2ene,e_ch3co2h package ecrimechtno emiss_opt==20 - emis_ant:e_co,e_no,e_no2,e_so2,e_nh3,e_c2h6,e_c3h8,e_c2h4,e_c3h6,e_c5h8,e_tm123b,e_tm124b,e_tm135b,e_oethtol,e_methtol,e_pethtol,e_dime35eb,e_hcho,e_ch3cho,e_c2h5cho,e_ket,e_mek,e_ch3oh,e_c2h5oh,e_c2h2,e_benzene,e_nc4h10,e_toluene,e_oxyl,e_tbut2ene,e_ch3co2h,e_bc_1,e_ec_1_25,e_ec_25_10,e_oc_dom,e_oc_tra,e_oc_25_10,e_pm25,e_oin_25,e_oin_10 # @@ -4097,6 +4155,7 @@ package biomassb_t1_mozcart biomass_burn_opt==4 - state:me # GHG biomass burning package biomassb_ghg biomass_burn_opt==5 - state::mean_fct_agtf,mean_fct_agef,mean_fct_agsv,mean_fct_aggr,firesize_agtf,firesize_agef,firesize_agsv,firesize_aggr;ebu:ebu_co,ebu_co2,ebu_ch4;ebu_in:ebu_in_co,ebu_in_co2,ebu_in_ch4 +package biomassb_ghg2 biomass_burn_opt==6 - state::mean_fct_agtf,mean_fct_agef,mean_fct_agsv,mean_fct_aggr,firesize_agtf,firesize_agef,firesize_agsv,firesize_aggr;ebu:ebu_co,ebu_eth,ebu_ch4,ebu_c13;ebu_in:ebu_in_co,ebu_in_eth,ebu_in_ch4,ebu_in_c13 # Package for mozart pH diagnostics package do_mozart_ph_diag mozart_ph_diag==1 - state:ph_cw,ph_aer01,ph_aer02,ph_aer03,ph_aer04 diff --git a/chem/Makefile b/chem/Makefile index 9bf3acd38f..a6740f1b7d 100755 --- a/chem/Makefile +++ b/chem/Makefile @@ -1,3 +1,8 @@ +# +# MANUAL CHANGES TO THIS FILE WILL BE LOST +# ... EDIT Makefile_org INSTEAD ... +# this file was written by gen_kpp.c + # # Changing this file requires mods to # WRFV3_top/chem/KPP/util/wkc/change_chem_Makefile.c @@ -56,8 +61,220 @@ MODULES = \ module_data_soa_vbs_het.o \ module_data_sorgam.o \ module_data_sorgam_vbs.o \ + module_kpp_cbm4_Integr.o \ + module_kpp_cbm4_Precision.o \ + module_kpp_cbm4_Parameters.o \ + module_kpp_cbm4_Jacobian.o \ + module_kpp_cbm4_JacobianSP.o \ + module_kpp_cbm4_Update_Rconst.o \ + module_kpp_cbm4_interface.o \ + module_kpp_mozcart_Integr.o \ + module_kpp_mozcart_Precision.o \ + module_kpp_mozcart_Parameters.o \ + module_kpp_mozcart_Jacobian.o \ + module_kpp_mozcart_JacobianSP.o \ + module_kpp_mozcart_Update_Rconst.o \ + module_kpp_mozcart_interface.o \ + module_kpp_racm_mim_Integr.o \ + module_kpp_racm_mim_Precision.o \ + module_kpp_racm_mim_Parameters.o \ + module_kpp_racm_mim_Jacobian.o \ + module_kpp_racm_mim_JacobianSP.o \ + module_kpp_racm_mim_Update_Rconst.o \ + module_kpp_racm_mim_interface.o \ + module_kpp_racm_Integr.o \ + module_kpp_racm_Precision.o \ + module_kpp_racm_Parameters.o \ + module_kpp_racm_Jacobian.o \ + module_kpp_racm_JacobianSP.o \ + module_kpp_racm_Update_Rconst.o \ + module_kpp_racm_interface.o \ + module_kpp_mozart_mosaic_4bin_aq_Integr.o \ + module_kpp_mozart_mosaic_4bin_aq_Precision.o \ + module_kpp_mozart_mosaic_4bin_aq_Parameters.o \ + module_kpp_mozart_mosaic_4bin_aq_Jacobian.o \ + module_kpp_mozart_mosaic_4bin_aq_JacobianSP.o \ + module_kpp_mozart_mosaic_4bin_aq_Update_Rconst.o \ + module_kpp_mozart_mosaic_4bin_aq_interface.o \ + module_kpp_t1_mozcart_Integr.o \ + module_kpp_t1_mozcart_Precision.o \ + module_kpp_t1_mozcart_Parameters.o \ + module_kpp_t1_mozcart_Jacobian.o \ + module_kpp_t1_mozcart_JacobianSP.o \ + module_kpp_t1_mozcart_Update_Rconst.o \ + module_kpp_t1_mozcart_interface.o \ + module_kpp_radm2sorg_Integr.o \ + module_kpp_radm2sorg_Precision.o \ + module_kpp_radm2sorg_Parameters.o \ + module_kpp_radm2sorg_Jacobian.o \ + module_kpp_radm2sorg_JacobianSP.o \ + module_kpp_radm2sorg_Update_Rconst.o \ + module_kpp_radm2sorg_interface.o \ + module_kpp_cb05_sorg_aq_Integr.o \ + module_kpp_cb05_sorg_aq_Precision.o \ + module_kpp_cb05_sorg_aq_Parameters.o \ + module_kpp_cb05_sorg_aq_Jacobian.o \ + module_kpp_cb05_sorg_aq_JacobianSP.o \ + module_kpp_cb05_sorg_aq_Update_Rconst.o \ + module_kpp_cb05_sorg_aq_interface.o \ + module_kpp_racm_esrlsorg_aqchem_Integr.o \ + module_kpp_racm_esrlsorg_aqchem_Precision.o \ + module_kpp_racm_esrlsorg_aqchem_Parameters.o \ + module_kpp_racm_esrlsorg_aqchem_Jacobian.o \ + module_kpp_racm_esrlsorg_aqchem_JacobianSP.o \ + module_kpp_racm_esrlsorg_aqchem_Update_Rconst.o \ + module_kpp_racm_esrlsorg_aqchem_interface.o \ + module_kpp_racmsorg_Integr.o \ + module_kpp_racmsorg_Precision.o \ + module_kpp_racmsorg_Parameters.o \ + module_kpp_racmsorg_Jacobian.o \ + module_kpp_racmsorg_JacobianSP.o \ + module_kpp_racmsorg_Update_Rconst.o \ + module_kpp_racmsorg_interface.o \ + module_kpp_crimech_Integr.o \ + module_kpp_crimech_Precision.o \ + module_kpp_crimech_Parameters.o \ + module_kpp_crimech_Jacobian.o \ + module_kpp_crimech_JacobianSP.o \ + module_kpp_crimech_Update_Rconst.o \ + module_kpp_crimech_interface.o \ + module_kpp_cri_mosaic_8bin_aq_Integr.o \ + module_kpp_cri_mosaic_8bin_aq_Precision.o \ + module_kpp_cri_mosaic_8bin_aq_Parameters.o \ + module_kpp_cri_mosaic_8bin_aq_Jacobian.o \ + module_kpp_cri_mosaic_8bin_aq_JacobianSP.o \ + module_kpp_cri_mosaic_8bin_aq_Update_Rconst.o \ + module_kpp_cri_mosaic_8bin_aq_interface.o \ + module_kpp_racmsorg_aqchem_Integr.o \ + module_kpp_racmsorg_aqchem_Precision.o \ + module_kpp_racmsorg_aqchem_Parameters.o \ + module_kpp_racmsorg_aqchem_Jacobian.o \ + module_kpp_racmsorg_aqchem_JacobianSP.o \ + module_kpp_racmsorg_aqchem_Update_Rconst.o \ + module_kpp_racmsorg_aqchem_interface.o \ + module_kpp_cb05_sorg_vbs_aq_Integr.o \ + module_kpp_cb05_sorg_vbs_aq_Precision.o \ + module_kpp_cb05_sorg_vbs_aq_Parameters.o \ + module_kpp_cb05_sorg_vbs_aq_Jacobian.o \ + module_kpp_cb05_sorg_vbs_aq_JacobianSP.o \ + module_kpp_cb05_sorg_vbs_aq_Update_Rconst.o \ + module_kpp_cb05_sorg_vbs_aq_interface.o \ + module_kpp_racm_esrlsorg_Integr.o \ + module_kpp_racm_esrlsorg_Precision.o \ + module_kpp_racm_esrlsorg_Parameters.o \ + module_kpp_racm_esrlsorg_Jacobian.o \ + module_kpp_racm_esrlsorg_JacobianSP.o \ + module_kpp_racm_esrlsorg_Update_Rconst.o \ + module_kpp_racm_esrlsorg_interface.o \ + module_kpp_cri_mosaic_4bin_aq_Integr.o \ + module_kpp_cri_mosaic_4bin_aq_Precision.o \ + module_kpp_cri_mosaic_4bin_aq_Parameters.o \ + module_kpp_cri_mosaic_4bin_aq_Jacobian.o \ + module_kpp_cri_mosaic_4bin_aq_JacobianSP.o \ + module_kpp_cri_mosaic_4bin_aq_Update_Rconst.o \ + module_kpp_cri_mosaic_4bin_aq_interface.o \ + module_kpp_gocartracm_Integr.o \ + module_kpp_gocartracm_Precision.o \ + module_kpp_gocartracm_Parameters.o \ + module_kpp_gocartracm_Jacobian.o \ + module_kpp_gocartracm_JacobianSP.o \ + module_kpp_gocartracm_Update_Rconst.o \ + module_kpp_gocartracm_interface.o \ + module_kpp_racm_soa_vbs_Integr.o \ + module_kpp_racm_soa_vbs_Precision.o \ + module_kpp_racm_soa_vbs_Parameters.o \ + module_kpp_racm_soa_vbs_Jacobian.o \ + module_kpp_racm_soa_vbs_JacobianSP.o \ + module_kpp_racm_soa_vbs_Update_Rconst.o \ + module_kpp_racm_soa_vbs_interface.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_Integr.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_Precision.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_Jacobian.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_JacobianSP.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_Update_Rconst.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_interface.o \ + module_kpp_racm_soa_vbs_aqchem_Integr.o \ + module_kpp_racm_soa_vbs_aqchem_Precision.o \ + module_kpp_racm_soa_vbs_aqchem_Parameters.o \ + module_kpp_racm_soa_vbs_aqchem_Jacobian.o \ + module_kpp_racm_soa_vbs_aqchem_JacobianSP.o \ + module_kpp_racm_soa_vbs_aqchem_Update_Rconst.o \ + module_kpp_racm_soa_vbs_aqchem_interface.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_Integr.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_Precision.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_Jacobian.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_JacobianSP.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_Update_Rconst.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_interface.o \ + module_kpp_racmpm_Integr.o \ + module_kpp_racmpm_Precision.o \ + module_kpp_racmpm_Parameters.o \ + module_kpp_racmpm_Jacobian.o \ + module_kpp_racmpm_JacobianSP.o \ + module_kpp_racmpm_Update_Rconst.o \ + module_kpp_racmpm_interface.o \ + module_kpp_nmhc9_Integr.o \ + module_kpp_nmhc9_Precision.o \ + module_kpp_nmhc9_Parameters.o \ + module_kpp_nmhc9_Jacobian.o \ + module_kpp_nmhc9_JacobianSP.o \ + module_kpp_nmhc9_Update_Rconst.o \ + module_kpp_nmhc9_interface.o \ + module_kpp_mozart_mosaic_4bin_Integr.o \ + module_kpp_mozart_mosaic_4bin_Precision.o \ + module_kpp_mozart_mosaic_4bin_Parameters.o \ + module_kpp_mozart_mosaic_4bin_Jacobian.o \ + module_kpp_mozart_mosaic_4bin_JacobianSP.o \ + module_kpp_mozart_mosaic_4bin_Update_Rconst.o \ + module_kpp_mozart_mosaic_4bin_interface.o \ + module_kpp_racm_soa_vbs_het_Integr.o \ + module_kpp_racm_soa_vbs_het_Precision.o \ + module_kpp_racm_soa_vbs_het_Parameters.o \ + module_kpp_racm_soa_vbs_het_Jacobian.o \ + module_kpp_racm_soa_vbs_het_JacobianSP.o \ + module_kpp_racm_soa_vbs_het_Update_Rconst.o \ + module_kpp_racm_soa_vbs_het_interface.o \ + module_kpp_cbmz_mosaic_Integr.o \ + module_kpp_cbmz_mosaic_Precision.o \ + module_kpp_cbmz_mosaic_Parameters.o \ + module_kpp_cbmz_mosaic_Jacobian.o \ + module_kpp_cbmz_mosaic_JacobianSP.o \ + module_kpp_cbmz_mosaic_Update_Rconst.o \ + module_kpp_cbmz_mosaic_interface.o \ + module_kpp_radm2_Integr.o \ + module_kpp_radm2_Precision.o \ + module_kpp_radm2_Parameters.o \ + module_kpp_radm2_Jacobian.o \ + module_kpp_radm2_JacobianSP.o \ + module_kpp_radm2_Update_Rconst.o \ + module_kpp_radm2_interface.o \ + module_kpp_mozart_Integr.o \ + module_kpp_mozart_Precision.o \ + module_kpp_mozart_Parameters.o \ + module_kpp_mozart_Jacobian.o \ + module_kpp_mozart_JacobianSP.o \ + module_kpp_mozart_Update_Rconst.o \ + module_kpp_mozart_interface.o \ + module_kpp_saprc99_Integr.o \ + module_kpp_saprc99_Precision.o \ + module_kpp_saprc99_Parameters.o \ + module_kpp_saprc99_Jacobian.o \ + module_kpp_saprc99_JacobianSP.o \ + module_kpp_saprc99_Update_Rconst.o \ + module_kpp_saprc99_interface.o \ + module_kpp_cbmz_bb_Integr.o \ + module_kpp_cbmz_bb_Precision.o \ + module_kpp_cbmz_bb_Parameters.o \ + module_kpp_cbmz_bb_Jacobian.o \ + module_kpp_cbmz_bb_JacobianSP.o \ + module_kpp_cbmz_bb_Update_Rconst.o \ + module_kpp_cbmz_bb_interface.o \ + module_wkppc_constants.o \ module_ftuv_subs.o \ module_ghg_fluxes.o \ + module_ghg_chem.o \ module_gocart_drydep.o \ module_gocart_settling.o \ module_gocart_so2so4.o \ @@ -197,6 +414,7 @@ MODULES = \ module_isorev.o OBJS = \ + kpp_mechanism_driver.o \ chemics_init.o \ chem_driver.o \ cloudchem_driver.o \ @@ -226,6 +444,320 @@ clean: @ echo 'use the clean script' # DEPENDENCIES : only dependencies after this line (don't remove the word DEPENDENCIES) +module_kpp_cbm4_Parameters.o: module_kpp_cbm4_Precision.o + +module_kpp_cbm4_Update_Rconst.o: module_kpp_cbm4_Parameters.o + +module_kpp_cbm4_Jacobian.o: module_kpp_cbm4_Parameters.o module_kpp_cbm4_JacobianSP.o + +module_kpp_cbm4_Integr.o: module_kpp_cbm4_Parameters.o module_kpp_cbm4_Jacobian.o module_kpp_cbm4_JacobianSP.o module_kpp_cbm4_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cbm4_interface.o: module_kpp_cbm4_Parameters.o module_kpp_cbm4_Precision.o module_kpp_cbm4_Integr.o module_kpp_cbm4_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozcart_Parameters.o: module_kpp_mozcart_Precision.o + +module_kpp_mozcart_Update_Rconst.o: module_kpp_mozcart_Parameters.o + +module_kpp_mozcart_Jacobian.o: module_kpp_mozcart_Parameters.o module_kpp_mozcart_JacobianSP.o + +module_kpp_mozcart_Integr.o: module_kpp_mozcart_Parameters.o module_kpp_mozcart_Jacobian.o module_kpp_mozcart_JacobianSP.o module_kpp_mozcart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozcart_interface.o: module_kpp_mozcart_Parameters.o module_kpp_mozcart_Precision.o module_kpp_mozcart_Integr.o module_kpp_mozcart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_mim_Parameters.o: module_kpp_racm_mim_Precision.o + +module_kpp_racm_mim_Update_Rconst.o: module_kpp_racm_mim_Parameters.o + +module_kpp_racm_mim_Jacobian.o: module_kpp_racm_mim_Parameters.o module_kpp_racm_mim_JacobianSP.o + +module_kpp_racm_mim_Integr.o: module_kpp_racm_mim_Parameters.o module_kpp_racm_mim_Jacobian.o module_kpp_racm_mim_JacobianSP.o module_kpp_racm_mim_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_mim_interface.o: module_kpp_racm_mim_Parameters.o module_kpp_racm_mim_Precision.o module_kpp_racm_mim_Integr.o module_kpp_racm_mim_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_Parameters.o: module_kpp_racm_Precision.o + +module_kpp_racm_Update_Rconst.o: module_kpp_racm_Parameters.o + +module_kpp_racm_Jacobian.o: module_kpp_racm_Parameters.o module_kpp_racm_JacobianSP.o + +module_kpp_racm_Integr.o: module_kpp_racm_Parameters.o module_kpp_racm_Jacobian.o module_kpp_racm_JacobianSP.o module_kpp_racm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_interface.o: module_kpp_racm_Parameters.o module_kpp_racm_Precision.o module_kpp_racm_Integr.o module_kpp_racm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_mosaic_4bin_aq_Parameters.o: module_kpp_mozart_mosaic_4bin_aq_Precision.o + +module_kpp_mozart_mosaic_4bin_aq_Update_Rconst.o: module_kpp_mozart_mosaic_4bin_aq_Parameters.o + +module_kpp_mozart_mosaic_4bin_aq_Jacobian.o: module_kpp_mozart_mosaic_4bin_aq_Parameters.o module_kpp_mozart_mosaic_4bin_aq_JacobianSP.o + +module_kpp_mozart_mosaic_4bin_aq_Integr.o: module_kpp_mozart_mosaic_4bin_aq_Parameters.o module_kpp_mozart_mosaic_4bin_aq_Jacobian.o module_kpp_mozart_mosaic_4bin_aq_JacobianSP.o module_kpp_mozart_mosaic_4bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_mosaic_4bin_aq_interface.o: module_kpp_mozart_mosaic_4bin_aq_Parameters.o module_kpp_mozart_mosaic_4bin_aq_Precision.o module_kpp_mozart_mosaic_4bin_aq_Integr.o module_kpp_mozart_mosaic_4bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_t1_mozcart_Parameters.o: module_kpp_t1_mozcart_Precision.o + +module_kpp_t1_mozcart_Update_Rconst.o: module_kpp_t1_mozcart_Parameters.o + +module_kpp_t1_mozcart_Jacobian.o: module_kpp_t1_mozcart_Parameters.o module_kpp_t1_mozcart_JacobianSP.o + +module_kpp_t1_mozcart_Integr.o: module_kpp_t1_mozcart_Parameters.o module_kpp_t1_mozcart_Jacobian.o module_kpp_t1_mozcart_JacobianSP.o module_kpp_t1_mozcart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_t1_mozcart_interface.o: module_kpp_t1_mozcart_Parameters.o module_kpp_t1_mozcart_Precision.o module_kpp_t1_mozcart_Integr.o module_kpp_t1_mozcart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_radm2sorg_Parameters.o: module_kpp_radm2sorg_Precision.o + +module_kpp_radm2sorg_Update_Rconst.o: module_kpp_radm2sorg_Parameters.o + +module_kpp_radm2sorg_Jacobian.o: module_kpp_radm2sorg_Parameters.o module_kpp_radm2sorg_JacobianSP.o + +module_kpp_radm2sorg_Integr.o: module_kpp_radm2sorg_Parameters.o module_kpp_radm2sorg_Jacobian.o module_kpp_radm2sorg_JacobianSP.o module_kpp_radm2sorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_radm2sorg_interface.o: module_kpp_radm2sorg_Parameters.o module_kpp_radm2sorg_Precision.o module_kpp_radm2sorg_Integr.o module_kpp_radm2sorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cb05_sorg_aq_Parameters.o: module_kpp_cb05_sorg_aq_Precision.o + +module_kpp_cb05_sorg_aq_Update_Rconst.o: module_kpp_cb05_sorg_aq_Parameters.o + +module_kpp_cb05_sorg_aq_Jacobian.o: module_kpp_cb05_sorg_aq_Parameters.o module_kpp_cb05_sorg_aq_JacobianSP.o + +module_kpp_cb05_sorg_aq_Integr.o: module_kpp_cb05_sorg_aq_Parameters.o module_kpp_cb05_sorg_aq_Jacobian.o module_kpp_cb05_sorg_aq_JacobianSP.o module_kpp_cb05_sorg_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cb05_sorg_aq_interface.o: module_kpp_cb05_sorg_aq_Parameters.o module_kpp_cb05_sorg_aq_Precision.o module_kpp_cb05_sorg_aq_Integr.o module_kpp_cb05_sorg_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_esrlsorg_aqchem_Parameters.o: module_kpp_racm_esrlsorg_aqchem_Precision.o + +module_kpp_racm_esrlsorg_aqchem_Update_Rconst.o: module_kpp_racm_esrlsorg_aqchem_Parameters.o + +module_kpp_racm_esrlsorg_aqchem_Jacobian.o: module_kpp_racm_esrlsorg_aqchem_Parameters.o module_kpp_racm_esrlsorg_aqchem_JacobianSP.o + +module_kpp_racm_esrlsorg_aqchem_Integr.o: module_kpp_racm_esrlsorg_aqchem_Parameters.o module_kpp_racm_esrlsorg_aqchem_Jacobian.o module_kpp_racm_esrlsorg_aqchem_JacobianSP.o module_kpp_racm_esrlsorg_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_esrlsorg_aqchem_interface.o: module_kpp_racm_esrlsorg_aqchem_Parameters.o module_kpp_racm_esrlsorg_aqchem_Precision.o module_kpp_racm_esrlsorg_aqchem_Integr.o module_kpp_racm_esrlsorg_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmsorg_Parameters.o: module_kpp_racmsorg_Precision.o + +module_kpp_racmsorg_Update_Rconst.o: module_kpp_racmsorg_Parameters.o + +module_kpp_racmsorg_Jacobian.o: module_kpp_racmsorg_Parameters.o module_kpp_racmsorg_JacobianSP.o + +module_kpp_racmsorg_Integr.o: module_kpp_racmsorg_Parameters.o module_kpp_racmsorg_Jacobian.o module_kpp_racmsorg_JacobianSP.o module_kpp_racmsorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmsorg_interface.o: module_kpp_racmsorg_Parameters.o module_kpp_racmsorg_Precision.o module_kpp_racmsorg_Integr.o module_kpp_racmsorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_crimech_Parameters.o: module_kpp_crimech_Precision.o + +module_kpp_crimech_Update_Rconst.o: module_kpp_crimech_Parameters.o + +module_kpp_crimech_Jacobian.o: module_kpp_crimech_Parameters.o module_kpp_crimech_JacobianSP.o + +module_kpp_crimech_Integr.o: module_kpp_crimech_Parameters.o module_kpp_crimech_Jacobian.o module_kpp_crimech_JacobianSP.o module_kpp_crimech_Update_Rconst.o module_wkppc_constants.o + +module_kpp_crimech_interface.o: module_kpp_crimech_Parameters.o module_kpp_crimech_Precision.o module_kpp_crimech_Integr.o module_kpp_crimech_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cri_mosaic_8bin_aq_Parameters.o: module_kpp_cri_mosaic_8bin_aq_Precision.o + +module_kpp_cri_mosaic_8bin_aq_Update_Rconst.o: module_kpp_cri_mosaic_8bin_aq_Parameters.o + +module_kpp_cri_mosaic_8bin_aq_Jacobian.o: module_kpp_cri_mosaic_8bin_aq_Parameters.o module_kpp_cri_mosaic_8bin_aq_JacobianSP.o + +module_kpp_cri_mosaic_8bin_aq_Integr.o: module_kpp_cri_mosaic_8bin_aq_Parameters.o module_kpp_cri_mosaic_8bin_aq_Jacobian.o module_kpp_cri_mosaic_8bin_aq_JacobianSP.o module_kpp_cri_mosaic_8bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cri_mosaic_8bin_aq_interface.o: module_kpp_cri_mosaic_8bin_aq_Parameters.o module_kpp_cri_mosaic_8bin_aq_Precision.o module_kpp_cri_mosaic_8bin_aq_Integr.o module_kpp_cri_mosaic_8bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmsorg_aqchem_Parameters.o: module_kpp_racmsorg_aqchem_Precision.o + +module_kpp_racmsorg_aqchem_Update_Rconst.o: module_kpp_racmsorg_aqchem_Parameters.o + +module_kpp_racmsorg_aqchem_Jacobian.o: module_kpp_racmsorg_aqchem_Parameters.o module_kpp_racmsorg_aqchem_JacobianSP.o + +module_kpp_racmsorg_aqchem_Integr.o: module_kpp_racmsorg_aqchem_Parameters.o module_kpp_racmsorg_aqchem_Jacobian.o module_kpp_racmsorg_aqchem_JacobianSP.o module_kpp_racmsorg_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmsorg_aqchem_interface.o: module_kpp_racmsorg_aqchem_Parameters.o module_kpp_racmsorg_aqchem_Precision.o module_kpp_racmsorg_aqchem_Integr.o module_kpp_racmsorg_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cb05_sorg_vbs_aq_Parameters.o: module_kpp_cb05_sorg_vbs_aq_Precision.o + +module_kpp_cb05_sorg_vbs_aq_Update_Rconst.o: module_kpp_cb05_sorg_vbs_aq_Parameters.o + +module_kpp_cb05_sorg_vbs_aq_Jacobian.o: module_kpp_cb05_sorg_vbs_aq_Parameters.o module_kpp_cb05_sorg_vbs_aq_JacobianSP.o + +module_kpp_cb05_sorg_vbs_aq_Integr.o: module_kpp_cb05_sorg_vbs_aq_Parameters.o module_kpp_cb05_sorg_vbs_aq_Jacobian.o module_kpp_cb05_sorg_vbs_aq_JacobianSP.o module_kpp_cb05_sorg_vbs_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cb05_sorg_vbs_aq_interface.o: module_kpp_cb05_sorg_vbs_aq_Parameters.o module_kpp_cb05_sorg_vbs_aq_Precision.o module_kpp_cb05_sorg_vbs_aq_Integr.o module_kpp_cb05_sorg_vbs_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_esrlsorg_Parameters.o: module_kpp_racm_esrlsorg_Precision.o + +module_kpp_racm_esrlsorg_Update_Rconst.o: module_kpp_racm_esrlsorg_Parameters.o + +module_kpp_racm_esrlsorg_Jacobian.o: module_kpp_racm_esrlsorg_Parameters.o module_kpp_racm_esrlsorg_JacobianSP.o + +module_kpp_racm_esrlsorg_Integr.o: module_kpp_racm_esrlsorg_Parameters.o module_kpp_racm_esrlsorg_Jacobian.o module_kpp_racm_esrlsorg_JacobianSP.o module_kpp_racm_esrlsorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_esrlsorg_interface.o: module_kpp_racm_esrlsorg_Parameters.o module_kpp_racm_esrlsorg_Precision.o module_kpp_racm_esrlsorg_Integr.o module_kpp_racm_esrlsorg_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cri_mosaic_4bin_aq_Parameters.o: module_kpp_cri_mosaic_4bin_aq_Precision.o + +module_kpp_cri_mosaic_4bin_aq_Update_Rconst.o: module_kpp_cri_mosaic_4bin_aq_Parameters.o + +module_kpp_cri_mosaic_4bin_aq_Jacobian.o: module_kpp_cri_mosaic_4bin_aq_Parameters.o module_kpp_cri_mosaic_4bin_aq_JacobianSP.o + +module_kpp_cri_mosaic_4bin_aq_Integr.o: module_kpp_cri_mosaic_4bin_aq_Parameters.o module_kpp_cri_mosaic_4bin_aq_Jacobian.o module_kpp_cri_mosaic_4bin_aq_JacobianSP.o module_kpp_cri_mosaic_4bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cri_mosaic_4bin_aq_interface.o: module_kpp_cri_mosaic_4bin_aq_Parameters.o module_kpp_cri_mosaic_4bin_aq_Precision.o module_kpp_cri_mosaic_4bin_aq_Integr.o module_kpp_cri_mosaic_4bin_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_gocartracm_Parameters.o: module_kpp_gocartracm_Precision.o + +module_kpp_gocartracm_Update_Rconst.o: module_kpp_gocartracm_Parameters.o + +module_kpp_gocartracm_Jacobian.o: module_kpp_gocartracm_Parameters.o module_kpp_gocartracm_JacobianSP.o + +module_kpp_gocartracm_Integr.o: module_kpp_gocartracm_Parameters.o module_kpp_gocartracm_Jacobian.o module_kpp_gocartracm_JacobianSP.o module_kpp_gocartracm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_gocartracm_interface.o: module_kpp_gocartracm_Parameters.o module_kpp_gocartracm_Precision.o module_kpp_gocartracm_Integr.o module_kpp_gocartracm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_Parameters.o: module_kpp_racm_soa_vbs_Precision.o + +module_kpp_racm_soa_vbs_Update_Rconst.o: module_kpp_racm_soa_vbs_Parameters.o + +module_kpp_racm_soa_vbs_Jacobian.o: module_kpp_racm_soa_vbs_Parameters.o module_kpp_racm_soa_vbs_JacobianSP.o + +module_kpp_racm_soa_vbs_Integr.o: module_kpp_racm_soa_vbs_Parameters.o module_kpp_racm_soa_vbs_Jacobian.o module_kpp_racm_soa_vbs_JacobianSP.o module_kpp_racm_soa_vbs_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_interface.o: module_kpp_racm_soa_vbs_Parameters.o module_kpp_racm_soa_vbs_Precision.o module_kpp_racm_soa_vbs_Integr.o module_kpp_racm_soa_vbs_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o: module_kpp_saprc99_mosaic_8bin_vbs2_aq_Precision.o + +module_kpp_saprc99_mosaic_8bin_vbs2_aq_Update_Rconst.o: module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o + +module_kpp_saprc99_mosaic_8bin_vbs2_aq_Jacobian.o: module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_JacobianSP.o + +module_kpp_saprc99_mosaic_8bin_vbs2_aq_Integr.o: module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_Jacobian.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_JacobianSP.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_mosaic_8bin_vbs2_aq_interface.o: module_kpp_saprc99_mosaic_8bin_vbs2_aq_Parameters.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_Precision.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_Integr.o module_kpp_saprc99_mosaic_8bin_vbs2_aq_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_aqchem_Parameters.o: module_kpp_racm_soa_vbs_aqchem_Precision.o + +module_kpp_racm_soa_vbs_aqchem_Update_Rconst.o: module_kpp_racm_soa_vbs_aqchem_Parameters.o + +module_kpp_racm_soa_vbs_aqchem_Jacobian.o: module_kpp_racm_soa_vbs_aqchem_Parameters.o module_kpp_racm_soa_vbs_aqchem_JacobianSP.o + +module_kpp_racm_soa_vbs_aqchem_Integr.o: module_kpp_racm_soa_vbs_aqchem_Parameters.o module_kpp_racm_soa_vbs_aqchem_Jacobian.o module_kpp_racm_soa_vbs_aqchem_JacobianSP.o module_kpp_racm_soa_vbs_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_aqchem_interface.o: module_kpp_racm_soa_vbs_aqchem_Parameters.o module_kpp_racm_soa_vbs_aqchem_Precision.o module_kpp_racm_soa_vbs_aqchem_Integr.o module_kpp_racm_soa_vbs_aqchem_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o: module_kpp_saprc99_mosaic_4bin_vbs2_Precision.o + +module_kpp_saprc99_mosaic_4bin_vbs2_Update_Rconst.o: module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o + +module_kpp_saprc99_mosaic_4bin_vbs2_Jacobian.o: module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o module_kpp_saprc99_mosaic_4bin_vbs2_JacobianSP.o + +module_kpp_saprc99_mosaic_4bin_vbs2_Integr.o: module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o module_kpp_saprc99_mosaic_4bin_vbs2_Jacobian.o module_kpp_saprc99_mosaic_4bin_vbs2_JacobianSP.o module_kpp_saprc99_mosaic_4bin_vbs2_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_mosaic_4bin_vbs2_interface.o: module_kpp_saprc99_mosaic_4bin_vbs2_Parameters.o module_kpp_saprc99_mosaic_4bin_vbs2_Precision.o module_kpp_saprc99_mosaic_4bin_vbs2_Integr.o module_kpp_saprc99_mosaic_4bin_vbs2_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmpm_Parameters.o: module_kpp_racmpm_Precision.o + +module_kpp_racmpm_Update_Rconst.o: module_kpp_racmpm_Parameters.o + +module_kpp_racmpm_Jacobian.o: module_kpp_racmpm_Parameters.o module_kpp_racmpm_JacobianSP.o + +module_kpp_racmpm_Integr.o: module_kpp_racmpm_Parameters.o module_kpp_racmpm_Jacobian.o module_kpp_racmpm_JacobianSP.o module_kpp_racmpm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racmpm_interface.o: module_kpp_racmpm_Parameters.o module_kpp_racmpm_Precision.o module_kpp_racmpm_Integr.o module_kpp_racmpm_Update_Rconst.o module_wkppc_constants.o + +module_kpp_nmhc9_Parameters.o: module_kpp_nmhc9_Precision.o + +module_kpp_nmhc9_Update_Rconst.o: module_kpp_nmhc9_Parameters.o + +module_kpp_nmhc9_Jacobian.o: module_kpp_nmhc9_Parameters.o module_kpp_nmhc9_JacobianSP.o + +module_kpp_nmhc9_Integr.o: module_kpp_nmhc9_Parameters.o module_kpp_nmhc9_Jacobian.o module_kpp_nmhc9_JacobianSP.o module_kpp_nmhc9_Update_Rconst.o module_wkppc_constants.o + +module_kpp_nmhc9_interface.o: module_kpp_nmhc9_Parameters.o module_kpp_nmhc9_Precision.o module_kpp_nmhc9_Integr.o module_kpp_nmhc9_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_mosaic_4bin_Parameters.o: module_kpp_mozart_mosaic_4bin_Precision.o + +module_kpp_mozart_mosaic_4bin_Update_Rconst.o: module_kpp_mozart_mosaic_4bin_Parameters.o + +module_kpp_mozart_mosaic_4bin_Jacobian.o: module_kpp_mozart_mosaic_4bin_Parameters.o module_kpp_mozart_mosaic_4bin_JacobianSP.o + +module_kpp_mozart_mosaic_4bin_Integr.o: module_kpp_mozart_mosaic_4bin_Parameters.o module_kpp_mozart_mosaic_4bin_Jacobian.o module_kpp_mozart_mosaic_4bin_JacobianSP.o module_kpp_mozart_mosaic_4bin_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_mosaic_4bin_interface.o: module_kpp_mozart_mosaic_4bin_Parameters.o module_kpp_mozart_mosaic_4bin_Precision.o module_kpp_mozart_mosaic_4bin_Integr.o module_kpp_mozart_mosaic_4bin_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_het_Parameters.o: module_kpp_racm_soa_vbs_het_Precision.o + +module_kpp_racm_soa_vbs_het_Update_Rconst.o: module_kpp_racm_soa_vbs_het_Parameters.o + +module_kpp_racm_soa_vbs_het_Jacobian.o: module_kpp_racm_soa_vbs_het_Parameters.o module_kpp_racm_soa_vbs_het_JacobianSP.o + +module_kpp_racm_soa_vbs_het_Integr.o: module_kpp_racm_soa_vbs_het_Parameters.o module_kpp_racm_soa_vbs_het_Jacobian.o module_kpp_racm_soa_vbs_het_JacobianSP.o module_kpp_racm_soa_vbs_het_Update_Rconst.o module_wkppc_constants.o + +module_kpp_racm_soa_vbs_het_interface.o: module_kpp_racm_soa_vbs_het_Parameters.o module_kpp_racm_soa_vbs_het_Precision.o module_kpp_racm_soa_vbs_het_Integr.o module_kpp_racm_soa_vbs_het_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cbmz_mosaic_Parameters.o: module_kpp_cbmz_mosaic_Precision.o + +module_kpp_cbmz_mosaic_Update_Rconst.o: module_kpp_cbmz_mosaic_Parameters.o + +module_kpp_cbmz_mosaic_Jacobian.o: module_kpp_cbmz_mosaic_Parameters.o module_kpp_cbmz_mosaic_JacobianSP.o + +module_kpp_cbmz_mosaic_Integr.o: module_kpp_cbmz_mosaic_Parameters.o module_kpp_cbmz_mosaic_Jacobian.o module_kpp_cbmz_mosaic_JacobianSP.o module_kpp_cbmz_mosaic_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cbmz_mosaic_interface.o: module_kpp_cbmz_mosaic_Parameters.o module_kpp_cbmz_mosaic_Precision.o module_kpp_cbmz_mosaic_Integr.o module_kpp_cbmz_mosaic_Update_Rconst.o module_wkppc_constants.o + +module_kpp_radm2_Parameters.o: module_kpp_radm2_Precision.o + +module_kpp_radm2_Update_Rconst.o: module_kpp_radm2_Parameters.o + +module_kpp_radm2_Jacobian.o: module_kpp_radm2_Parameters.o module_kpp_radm2_JacobianSP.o + +module_kpp_radm2_Integr.o: module_kpp_radm2_Parameters.o module_kpp_radm2_Jacobian.o module_kpp_radm2_JacobianSP.o module_kpp_radm2_Update_Rconst.o module_wkppc_constants.o + +module_kpp_radm2_interface.o: module_kpp_radm2_Parameters.o module_kpp_radm2_Precision.o module_kpp_radm2_Integr.o module_kpp_radm2_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_Parameters.o: module_kpp_mozart_Precision.o + +module_kpp_mozart_Update_Rconst.o: module_kpp_mozart_Parameters.o + +module_kpp_mozart_Jacobian.o: module_kpp_mozart_Parameters.o module_kpp_mozart_JacobianSP.o + +module_kpp_mozart_Integr.o: module_kpp_mozart_Parameters.o module_kpp_mozart_Jacobian.o module_kpp_mozart_JacobianSP.o module_kpp_mozart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_mozart_interface.o: module_kpp_mozart_Parameters.o module_kpp_mozart_Precision.o module_kpp_mozart_Integr.o module_kpp_mozart_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_Parameters.o: module_kpp_saprc99_Precision.o + +module_kpp_saprc99_Update_Rconst.o: module_kpp_saprc99_Parameters.o + +module_kpp_saprc99_Jacobian.o: module_kpp_saprc99_Parameters.o module_kpp_saprc99_JacobianSP.o + +module_kpp_saprc99_Integr.o: module_kpp_saprc99_Parameters.o module_kpp_saprc99_Jacobian.o module_kpp_saprc99_JacobianSP.o module_kpp_saprc99_Update_Rconst.o module_wkppc_constants.o + +module_kpp_saprc99_interface.o: module_kpp_saprc99_Parameters.o module_kpp_saprc99_Precision.o module_kpp_saprc99_Integr.o module_kpp_saprc99_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cbmz_bb_Parameters.o: module_kpp_cbmz_bb_Precision.o + +module_kpp_cbmz_bb_Update_Rconst.o: module_kpp_cbmz_bb_Parameters.o + +module_kpp_cbmz_bb_Jacobian.o: module_kpp_cbmz_bb_Parameters.o module_kpp_cbmz_bb_JacobianSP.o + +module_kpp_cbmz_bb_Integr.o: module_kpp_cbmz_bb_Parameters.o module_kpp_cbmz_bb_Jacobian.o module_kpp_cbmz_bb_JacobianSP.o module_kpp_cbmz_bb_Update_Rconst.o module_wkppc_constants.o + +module_kpp_cbmz_bb_interface.o: module_kpp_cbmz_bb_Parameters.o module_kpp_cbmz_bb_Precision.o module_kpp_cbmz_bb_Integr.o module_kpp_cbmz_bb_Update_Rconst.o module_wkppc_constants.o + +module_wkkpc_constants.o: + +kpp_mechanism_driver.o: module_kpp_cbm4_interface.o module_kpp_mozcart_interface.o module_kpp_racm_mim_interface.o \ + module_kpp_racm_interface.o module_kpp_mozart_mosaic_4bin_aq_interface.o module_kpp_t1_mozcart_interface.o \ + module_kpp_radm2sorg_interface.o module_kpp_cb05_sorg_aq_interface.o module_kpp_racm_esrlsorg_aqchem_interface.o \ + module_kpp_racmsorg_interface.o module_kpp_crimech_interface.o module_kpp_cri_mosaic_8bin_aq_interface.o \ + module_kpp_racmsorg_aqchem_interface.o module_kpp_cb05_sorg_vbs_aq_interface.o module_kpp_racm_esrlsorg_interface.o \ + module_kpp_cri_mosaic_4bin_aq_interface.o module_kpp_gocartracm_interface.o module_kpp_racm_soa_vbs_interface.o \ + module_kpp_saprc99_mosaic_8bin_vbs2_aq_interface.o module_kpp_racm_soa_vbs_aqchem_interface.o \ + module_kpp_saprc99_mosaic_4bin_vbs2_interface.o module_kpp_racmpm_interface.o module_kpp_nmhc9_interface.o \ + module_kpp_mozart_mosaic_4bin_interface.o module_kpp_racm_soa_vbs_het_interface.o module_kpp_cbmz_mosaic_interface.o \ + module_kpp_radm2_interface.o module_kpp_mozart_interface.o module_kpp_saprc99_interface.o \ + module_kpp_cbmz_bb_interface.o + include depend.chem diff --git a/chem/chem_driver.F b/chem/chem_driver.F index 4c8268df1b..c6775dab6f 100755 --- a/chem/chem_driver.F +++ b/chem/chem_driver.F @@ -643,7 +643,7 @@ end SUBROUTINE sum_pm_driver CALL wrf_debug(15,'Volcanic Ash mode: only doing emissions, settling, and subgrid transport in chem_driver') CASE (DUST) CALL wrf_debug(15,'Dust only mode: only doing emissions, settling, and subgrid transport chem_driver') - CASE (CO2_TRACER,GHG_TRACER) + CASE (CO2_TRACER,GHG_TRACER,GHG_ISOTOPE) !JianHe CALL wrf_debug(15,'Greenhouse gas mode: fluxes and transport of GHG') CASE DEFAULT if(config_flags%tracer_opt > 0 )then @@ -876,7 +876,7 @@ end SUBROUTINE sum_pm_driver grid%TSLB, wet_in,grid%RAINC,grid%RAINNC, & grid%potevp,grid%SFCEVP,grid%LU_INDEX, & grid%biomt_par,grid%emit_par,grid%ebio_co2oce, & - eghg_bio, & + eghg_bio,grid%ghg_oh, & !JianHe grid%seas_flux, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -913,7 +913,8 @@ end SUBROUTINE sum_pm_driver config_flags%chem_opt /= DUST .and. & config_flags%chem_opt /= CHEM_TRACE2 .and. & config_flags%chem_opt /= CO2_TRACER .and. & - config_flags%chem_opt /= GHG_TRACER ) then + config_flags%chem_opt /= GHG_TRACER .and. & + config_flags%chem_opt /= GHG_ISOTOPE ) then !JianHe call wrf_debug(15,'calling optical driver') call optical_driver (grid%id,curr_secs,grid%dt,config_flags,haveaer, & chem,dz8w,rri,rh, & @@ -951,7 +952,8 @@ end SUBROUTINE sum_pm_driver config_flags%chem_opt /= DUST .and. & config_flags%chem_opt /= CHEM_TRACE2 .and. & config_flags%chem_opt /= CO2_TRACER .and. & - config_flags%chem_opt /= GHG_TRACER ) then + config_flags%chem_opt /= GHG_TRACER .and. & + config_flags%chem_opt /= GHG_ISOTOPE ) then !JianHe call wrf_debug(15,'calling photolysis driver') call photolysis_driver (grid%id,curr_secs,ktau,grid%dt, & config_flags,haveaer, & @@ -1216,7 +1218,8 @@ end SUBROUTINE sum_pm_driver config_flags%chem_opt /= DUST .and. & config_flags%chem_opt /= CHEM_TRACE2 .and. & config_flags%chem_opt /= CO2_TRACER .and. & - config_flags%chem_opt /= GHG_TRACER ) then + config_flags%chem_opt /= GHG_TRACER .and. & + config_flags%chem_opt /= GHG_ISOTOPE ) then ! JianHe ! ! chemical mechanisms diff --git a/chem/chemics_init.F b/chem/chemics_init.F index 59f0546883..89c1a4abfc 100755 --- a/chem/chemics_init.F +++ b/chem/chemics_init.F @@ -1,6 +1,7 @@ !WRF:MODEL_LAYER:INITIALIZATION ! - subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, & + subroutine chem_init (id,chem,emis_ant,ghg_oh, & !JianHe + scalar,dt,bioemdt,photdt,chemdt,stepbioe, & stepphot,stepchem,stepfirepl,plumerisefire_frq,z_at_w,xlat,xlong, & g,aerwrf,config_flags,grid,alt,t,p,CONVFAC,ttday,tcosz,julday,gmt, & tauaer1,tauaer2,tauaer3,tauaer4, & @@ -124,6 +125,11 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, REAL, DIMENSION( ims:ime , 1:kemit , jms:jme, num_emis_ant ) , & INTENT(INOUT ) :: & emis_ant + !JianHe: + REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , & + INTENT(INOUT ) :: & + ghg_oh + REAL, DIMENSION( ims:ime , kms:kme , jms:jme, num_scalar ) , & INTENT(INOUT ) :: & scalar @@ -236,7 +242,7 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, numgas_mam = numgas CALL wrf_debug(15,'calling RACM/MADE/SOA-VBS with AQCHEM chemistry from chem_driver') ! call wrf_message("WARNING: RACM_SOA_VBS_AQCHEM_KPP chemistry option is highly experimental and not recommended for use.") - CASE (CO2_TRACER, GHG_TRACER ) + CASE (CO2_TRACER, GHG_TRACER, GHG_ISOTOPE ) !JianHe call wrf_message("WARNING: Users interested in the GHG options should check the comments/references in header of module_ghg_fluxes") CASE (CBMZ_CAM_MAM3_NOAQ) numgas_mam = numgas @@ -279,7 +285,7 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, CALL wrf_debug(15,'calling biomass burning') endif - if ( config_flags%biomass_burn_opt == 5 ) then + if ( config_flags%biomass_burn_opt == 5 .or. config_flags%biomass_burn_opt == 6) then !JianHe CALL wrf_debug(15,'calling biomass burning for GHGs') endif @@ -596,7 +602,7 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, ! for diagnostics purposes only! !write(6,*)'config_flags%chem_opt, CO2_TRACER', config_flags%chem_opt, CO2_TRACER -if ( config_flags%chem_opt==CO2_TRACER .OR. config_flags%chem_opt==GHG_TRACER ) then +if ( config_flags%chem_opt==CO2_TRACER .OR. config_flags%chem_opt==GHG_TRACER ) then call VPRM_par_initialize ( grid%rad_vprm, grid%lambda_vprm, grid%alpha_vprm, grid%resp_vprm, config_flags ) call wrf_message("Warning: the VPRM parameters may need to be optimized depending on the season, year and region!") call wrf_message("The parameters provided here should be used for testing purposes only!") @@ -605,6 +611,17 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, if (config_flags%chem_opt .EQ. GHG_TRACER) then CALL termite_initialize(grid%biomt_par,grid%emit_par,config_flags) end if + +!JianHe: for ghg_oh +if ( config_flags%chem_opt==GHG_ISOTOPE) then + do j=jts,jte + do k=kts,kte + do i=its,ite + ghg_oh(i,k,j) = 0. + end do + end do + end do +end if !-------------------------------------------------------------------------------------------------------- ! ! RETURN IF CHEMISTRY IS NOT RUNNING @@ -1625,19 +1642,20 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, do j=jts,jte do k=kts,kte do i=its,ite - chem(i,k,j,p_co2_bck)=380. ! background CO2 tracer - chem(i,k,j,p_co2_bio)=380. ! A user should subtract this from the output fields! - chem(i,k,j,p_co2_oce)=380. ! A user should subtract this from the output fields! - chem(i,k,j,p_co2_ant)=380. ! A user should subtract this from the output fields! - chem(i,k,j,p_co2_tst)=380. ! A user should subtract this from the output fields! + chem(i,k,j,p_co2_bck)=420. ! background CO2 tracer + chem(i,k,j,p_co2_bio)=420. ! A user should subtract this from the output fields! + chem(i,k,j,p_co2_oce)=420. ! A user should subtract this from the output fields! + chem(i,k,j,p_co2_ant)=420. ! A user should subtract this from the output fields! + chem(i,k,j,p_co2_tst)=420. ! A user should subtract this from the output fields! - if (p_co2_bbu>1) chem(i,k,j,p_co2_bbu)=380. ! A user should subtract this from the output fields! + if (p_co2_bbu>1) chem(i,k,j,p_co2_bbu)=420. ! A user should subtract this from the output fields! enddo enddo enddo ! CO tracers: + if (p_co_bck.gt.1) then do j=jts,jte do k=kts,kte do i=its,ite @@ -1648,22 +1666,75 @@ subroutine chem_init (id,chem,emis_ant,scalar,dt,bioemdt,photdt,chemdt,stepbioe, enddo enddo enddo + end if + +! CH4 tracers: + !JH: skip if we have ic/bc + IF ((p_ch4_bck.gt.1) .AND. (.not. config_flags%have_bcs_chem )) THEN + do j=jts,jte + do k=kts,kte + do i=its,ite + chem(i,k,j,p_ch4_bck)=1.9 ! background CH4 tracer + chem(i,k,j,p_ch4_bio)=1.9 ! A user should subtract this from the output fields! + chem(i,k,j,p_ch4_ant)=1.9 ! A user should subtract this from the output fields! + chem(i,k,j,p_ch4_tst)=1.9 ! A user should subtract this from the output fields! + if (p_ch4_bbu > 1) chem(i,k,j,p_ch4_bbu)=1.9 ! A user should subtract this from the output fields! + enddo + enddo + enddo + ENDIF + + !JianHe: + IF ((p_ch4_ong.gt.1) .AND. (.not. config_flags%have_bcs_chem )) THEN + do j=jts,jte + do k=kts,kte + do i=its,ite + chem(i,k,j,p_ch4_ong)=1.9 ! background CH4 tracer + chem(i,k,j,p_ch4_agr)=1.9 ! A user should subtract this from the output fields! + chem(i,k,j,p_ch4_wst)=1.9 ! A user should subtract this from the output fields! + chem(i,k,j,p_ch4_wet)=1.9 ! A user should subtract this from the output fields! + enddo + enddo + enddo + ENDIF + + IF ((p_c13_bck.gt.1) .AND. (.not. config_flags%have_bcs_chem )) THEN + do j=jts,jte + do k=kts,kte + do i=its,ite + chem(i,k,j,p_c13_bck)=0.02 ! background CH4 tracer + chem(i,k,j,p_c13_bio)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_ant)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_tst)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_ong)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_agr)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_wst)=0.02 ! A user should subtract this from the output fields! + chem(i,k,j,p_c13_wet)=0.02 + if (p_c13_bbu >1) chem(i,k,j,p_c13_bbu)=0.02 ! A user should subtract this from the output fields! + + enddo + enddo + enddo + ENDIF + -! CH4 tracers: - IF (p_ch4_bck.gt.1) THEN + IF ((p_eth_bck.gt.1) .AND. (.not. config_flags%have_bcs_chem )) THEN do j=jts,jte do k=kts,kte do i=its,ite - chem(i,k,j,p_ch4_bck)=1.77 ! background CH4 tracer - chem(i,k,j,p_ch4_bio)=1.77 ! A user should subtract this from the output fields! - chem(i,k,j,p_ch4_ant)=1.77 ! A user should subtract this from the output fields! - chem(i,k,j,p_ch4_bbu)=1.77 ! A user should subtract this from the output fields! - chem(i,k,j,p_ch4_tst)=1.77 ! A user should subtract this from the output fields! + chem(i,k,j,p_eth_bck)=0.001 ! background eth tracer + chem(i,k,j,p_eth_bio)=0.001 ! A user should subtract this from the output fields! + chem(i,k,j,p_eth_ant)=0.001 ! A user should subtract this from the output fields! + chem(i,k,j,p_eth_tst)=0.001 ! A user should subtract this from the output fields! + chem(i,k,j,p_eth_ong)=0.001 ! A user should subtract this from the output fields! + if (p_eth_bbu > 1) chem(i,k,j,p_eth_bbu)=0.001 ! A user should subtract this from the output fields! + enddo enddo enddo ENDIF + ENDIF ENDIF ghg_block !! diff --git a/chem/depend.chem b/chem/depend.chem index ffe9704bfc..5f9b1a2830 100644 --- a/chem/depend.chem +++ b/chem/depend.chem @@ -165,7 +165,9 @@ module_vertmx_wrf.o: module_emissions_anthropogenics.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o -module_ghg_fluxes.o: +module_ghg_fluxes.o: module_ghg_chem.o + +module_ghg_chem.o: module_data_sorgam.o: module_data_radm2.o diff --git a/chem/dry_dep_driver.F b/chem/dry_dep_driver.F index b5c2f66501..276e6a5159 100755 --- a/chem/dry_dep_driver.F +++ b/chem/dry_dep_driver.F @@ -263,6 +263,7 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, & config_flags%chem_opt /= CHEM_TRACE2 .and. & config_flags%chem_opt /= CO2_TRACER .and. & config_flags%chem_opt /= GHG_TRACER .and. & + config_flags%chem_opt /= GHG_ISOTOPE .and. & !JianHe config_flags%chem_opt /= CHEM_VASH .and. & config_flags%chem_opt /= CHEM_VOLC_4BIN .and. & config_flags%chem_opt /= DUST .and. & diff --git a/chem/emissions_driver.F b/chem/emissions_driver.F index 9c4c8cb1a8..d2ecd4842c 100644 --- a/chem/emissions_driver.F +++ b/chem/emissions_driver.F @@ -72,7 +72,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & ! stuff for GHG fluxes vprm_in,rad_vprm,lambda_vprm,alpha_vprm,resp_vprm, & xtime,tslb,wet_in,rainc,rainnc,potevp,sfcevp,lu_index, & - biomt_par,emit_par,ebio_co2oce,eghg_bio, & + biomt_par,emit_par,ebio_co2oce,eghg_bio,ghg_oh, & !JianHe seas_flux, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -133,6 +133,9 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & REAL, DIMENSION( ims:ime, 1:config_flags%kemit, jms:jme,num_emis_ant),& INTENT(IN ) :: & emis_ant + !JianHe + REAL, DIMENSION( ims:ime, kms:kme, jms:jme), & + INTENT(IN ) :: ghg_oh REAL, DIMENSION( ims:ime, kms:kme, jms:jme,num_emis_vol), & INTENT(INOUT ) :: & emis_vol @@ -632,6 +635,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & config_flags%biomass_burn_opt == BIOMASSB_T1_MOZCART .OR. & config_flags%biomass_burn_opt == BIOMASSB_MOZ .OR. & config_flags%biomass_burn_opt == BIOMASSB_GHG .OR. & + config_flags%biomass_burn_opt == BIOMASSB_GHG2 .OR. & !JianHe config_flags%biomass_burn_opt == BIOMASSB ) then IF ( ktau==1 ) then do_plumerisefire = .true. @@ -784,7 +788,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & !!! *********** FIRE AND CHEM **************************************** ! fire_select: SELECT CASE(config_flags%biomass_burn_opt) - CASE (BIOMASSB,BIOMASSB_MOZC,BIOMASSB_MOZ,BIOMASSB_T1_MOZCART,BIOMASSB_GHG) + CASE (BIOMASSB,BIOMASSB_MOZC,BIOMASSB_MOZ,BIOMASSB_T1_MOZCART,BIOMASSB_GHG,BIOMASSB_GHG2) !JianHe ! if( do_plumerisefire )then ! CALL wrf_debug(15,'fire emissions: calling biomassb') ! write(0,*)ktau,stepfirepl @@ -1078,7 +1082,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & end do end do ! - CASE(CO2_TRACER,GHG_TRACER) ! for ghg_tracer package + CASE(CO2_TRACER,GHG_TRACER) ! for ghg_tracer package ! Update the biospheric CO2 fluxes CALL VPRM( ids,ide, jds,jde, & @@ -1126,9 +1130,24 @@ subroutine emissions_driver(id,ktau,dtstep,DX, & CALL add_ghg_fluxes( ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte, & + dtstep,dz8w,config_flags,rho_phy, & + t_phy,chem,emis_ant, & + eghg_bio=eghg_bio, & + ebio_co2oce=ebio_co2oce ) + END IF + !JianHe: currently, we do not include vprm for this option + !Maybe in the future, we can??? + CASE(GHG_ISOTOPE) + ! Add all the GHG fluxes to chem species, this step is for both + ! anthropogenic and biospheric fluxes + IF (config_flags%emiss_inpt_opt==16) THEN + CALL add_ghg_fluxes( ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte, & dtstep,dz8w,config_flags,rho_phy, & - chem,emis_ant,eghg_bio,ebio_co2oce ) + t_phy,chem,emis_ant, & + ghg_oh=ghg_oh ) END IF !************************************************************************************************** CASE (SAPRC99_KPP) !FIX FOR SAPRC07A diff --git a/chem/module_add_emiss_burn.F b/chem/module_add_emiss_burn.F index 76a33a80d8..a0e7e3dcfe 100644 --- a/chem/module_add_emiss_burn.F +++ b/chem/module_add_emiss_burn.F @@ -448,6 +448,21 @@ subroutine add_emis_burn(id,dtstep,ktau,dz8w,rho_phy,chem, & enddo enddo endif + CASE (GHG_ISOTOPE) !JianHe + if( biomass_burn_opt == BIOMASSB_GHG2 ) then + do j=jts,jte + do k=kts,kte + do i=its,ite + conv_rho=r_q*4.828e-4/rho_phy(i,k,j)*dtstep/60./dz8w(i,k,j) + chem(i,k,j,p_co_bbu) = chem(i,k,j,p_co_bbu)+ebu(i,k,j,p_ebu_co)*conv_rho + chem(i,k,j,p_eth_bbu) = chem(i,k,j,p_eth_bbu)+ebu(i,k,j,p_ebu_eth)*conv_rho + chem(i,k,j,p_ch4_bbu) = chem(i,k,j,p_ch4_bbu)+ebu(i,k,j,p_ebu_ch4)*conv_rho + chem(i,k,j,p_c13_bbu) = chem(i,k,j,p_c13_bbu)+ebu(i,k,j,p_ebu_c13)*conv_rho + enddo + enddo + enddo + endif + CASE DEFAULT call wrf_debug(15,'nothing done with burn emissions for chem array') END SELECT emiss_select diff --git a/chem/module_ghg_fluxes.F b/chem/module_ghg_fluxes.F index 478d8c2ac4..052a22616a 100644 --- a/chem/module_ghg_fluxes.F +++ b/chem/module_ghg_fluxes.F @@ -1,6 +1,7 @@ MODULE module_ghg_fluxes USE module_configure USE module_state_description + USE module_ghg_chem IMPLICIT NONE @@ -42,9 +43,9 @@ MODULE module_ghg_fluxes SUBROUTINE add_ghg_fluxes ( ids,ide, jds,jde, kds,kde, & ! Domain dimensions ims,ime, jms,jme, kms,kme, & ! Memory dimensions its,ite, jts,jte, kts,kte, & ! Tile dimensions - dtstep, dz8w, config_flags, rho_phy, & - chem, emis_ant,eghg_bio,ebio_co2oce ) + t_phy, chem, emis_ant, & + eghg_bio,ebio_co2oce,ghg_oh ) ! March-28, this subroutine adds all type of greenhouse gases to the chem species @@ -58,11 +59,16 @@ SUBROUTINE add_ghg_fluxes ( ids,ide, jds,jde, kds,kde, & ! Doma REAL, INTENT(IN ) :: dtstep -REAL, DIMENSION( ims:ime,jms:jme ), INTENT(IN ) :: ebio_co2oce +!JianHe: we set eghg_bio optional, not necessary for GHG_ISOTOPE +REAL, DIMENSION( ims:ime,jms:jme ), OPTIONAL, INTENT(IN ) :: ebio_co2oce REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), INTENT(INOUT ) :: chem -REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: rho_phy, dz8w +REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: rho_phy, dz8w, t_phy REAL, DIMENSION( ims:ime, kms:config_flags%kemit, jms:jme, num_emis_ant ), INTENT(IN ) :: emis_ant -REAL, DIMENSION( ims:ime, 1,jms:jme, num_eghg_bio ), INTENT(IN ) :: eghg_bio +REAL, DIMENSION( ims:ime, 1,jms:jme, num_eghg_bio ), OPTIONAL, INTENT(IN ) :: eghg_bio +!JianHe +REAL, DIMENSION( ims:ime, kms:kme, jms:jme), OPTIONAL, INTENT(IN ) :: ghg_oh + +REAL*8, DIMENSION( ims:ime, kms:kme, jms:jme) :: oh_in ! mol/mol INTEGER :: i,j,k REAL :: conv_rho @@ -70,8 +76,9 @@ SUBROUTINE add_ghg_fluxes ( ids,ide, jds,jde, kds,kde, & ! Doma call wrf_debug(15,'add_ghg_fluxes') ! For both GHG options -DO j=jts,jte - DO i=its,ite +IF(config_flags%chem_opt.ne.GHG_ISOTOPE) THEN + DO j=jts,jte + DO i=its,ite ! 3D anthropogenic fluxes DO k=kts,min(config_flags%kemit,kte) conv_rho=8.0461e-6/rho_phy(i,k,j)*dtstep/dz8w(i,k,j) ! 8.0461e-6=molar_mass(air)/3600, [g/mol/s] @@ -81,18 +88,22 @@ SUBROUTINE add_ghg_fluxes ( ids,ide, jds,jde, kds,kde, & ! Doma ! 2D biospheric fluxes: if (k==1) then - chem(i,1,j,p_co2_bio)= chem(i,1,j,p_co2_bio) + conv_rho* (eghg_bio(i,1,j,p_ebio_gee) + eghg_bio(i,1,j,p_ebio_res)) ! both uptake and release - chem(i,1,j,p_co2_oce)= chem(i,1,j,p_co2_oce) + conv_rho* ebio_co2oce(i,j) + if (present(eghg_bio)) then + chem(i,1,j,p_co2_bio)= chem(i,1,j,p_co2_bio) + conv_rho* (eghg_bio(i,1,j,p_ebio_gee) + eghg_bio(i,1,j,p_ebio_res)) ! both uptake and release + end if + if (present(ebio_co2oce)) then + chem(i,1,j,p_co2_oce)= chem(i,1,j,p_co2_oce) + conv_rho* ebio_co2oce(i,j) + end if end if ENDDO - ENDDO -ENDDO + ENDDO + ENDDO ! For the GHG_TRACER option only -IF(config_flags%chem_opt==GHG_TRACER) THEN - DO j=jts,jte - DO i=its,ite + IF(config_flags%chem_opt==GHG_TRACER) THEN + DO j=jts,jte + DO i=its,ite ! 3D anthropogenic fluxes DO k=kts,min(config_flags%kemit,kte) conv_rho=8.0461e-6/rho_phy(i,k,j)*dtstep/dz8w(i,k,j) ! 8.0461e-6=molar_mass(air)/3600, [g/mol/s] @@ -102,16 +113,79 @@ SUBROUTINE add_ghg_fluxes ( ids,ide, jds,jde, kds,kde, & ! Doma ! 2D biospheric fluxes: if (k==1) then - chem(i,1,j,p_ch4_bio)= chem(i,1,j,p_ch4_bio) + conv_rho* (eghg_bio(i,1,j,p_ebio_ch4wet) + eghg_bio(i,1,j,p_ebio_ch4soil) & + if (present(eghg_bio)) then + chem(i,1,j,p_ch4_bio)= chem(i,1,j,p_ch4_bio) + conv_rho* (eghg_bio(i,1,j,p_ebio_ch4wet) + eghg_bio(i,1,j,p_ebio_ch4soil) & + + eghg_bio(i,1,j,p_ebio_ch4term)) + end if + end if + + ENDDO + ENDDO + ENDDO + + END IF +END IF + +!JianHe: for the GHG_ISOTOPE option only +IF(config_flags%chem_opt==GHG_ISOTOPE) THEN + DO j=jts,jte + DO i=its,ite + ! 3D anthropogenic fluxes + DO k=kts,min(config_flags%kemit,kte) + conv_rho=8.0461e-6/rho_phy(i,k,j)*dtstep/dz8w(i,k,j) !8.0461e-6=molar_mass(air)/3600, [g/mol/s] + !We read ant from GRAPPES + chem(i,k,j,p_ch4_ant)= chem(i,k,j,p_ch4_ant) + conv_rho*emis_ant(i,k,j,p_e_ch4) + chem(i,k,j,p_ch4_tst)= chem(i,k,j,p_ch4_tst) + conv_rho*emis_ant(i,k,j,p_e_ch4tst) ! test ONG flux + chem(i,k,j,p_ch4_ong)= chem(i,k,j,p_ch4_ong) + conv_rho*emis_ant(i,k,j,p_e_ch4ong) + chem(i,k,j,p_ch4_agr)= chem(i,k,j,p_ch4_agr) + conv_rho*emis_ant(i,k,j,p_e_ch4agr) + chem(i,k,j,p_ch4_wst)= chem(i,k,j,p_ch4_wst) + conv_rho*emis_ant(i,k,j,p_e_ch4wst) + chem(i,k,j,p_ch4_wet)= chem(i,k,j,p_ch4_wet) + conv_rho*emis_ant(i,k,j,p_e_ch4wet) ! we use offline + chem(i,k,j,p_c13_ant)= chem(i,k,j,p_c13_ant) + conv_rho*emis_ant(i,k,j,p_e_c13ant) + chem(i,k,j,p_c13_tst)= chem(i,k,j,p_c13_tst) + conv_rho*emis_ant(i,k,j,p_e_c13tst) + chem(i,k,j,p_c13_ong)= chem(i,k,j,p_c13_ong) + conv_rho*emis_ant(i,k,j,p_e_c13ong) + chem(i,k,j,p_c13_agr)= chem(i,k,j,p_c13_agr) + conv_rho*emis_ant(i,k,j,p_e_c13agr) + chem(i,k,j,p_c13_wst)= chem(i,k,j,p_c13_wst) + conv_rho*emis_ant(i,k,j,p_e_c13wst) + chem(i,k,j,p_c13_wet)= chem(i,k,j,p_c13_wet) + conv_rho*emis_ant(i,k,j,p_e_c13wet) ! we use offline + + chem(i,k,j,p_eth_ant)= chem(i,k,j,p_eth_ant) + conv_rho*emis_ant(i,k,j,p_e_eth) + chem(i,k,j,p_eth_ong)= chem(i,k,j,p_eth_ong) + conv_rho*emis_ant(i,k,j,p_e_ethong) + chem(i,k,j,p_eth_tst)= chem(i,k,j,p_eth_tst) + conv_rho*emis_ant(i,k,j,p_e_ethtst) + + ! 2D biospheric fluxes: + !JianHe: we use preseribed ch4 bio fluxes + if (k==1) then + !JianHe: we use preseribed ch4 bio fluxes + if (present(eghg_bio)) then + chem(i,1,j,p_ch4_bio)= chem(i,1,j,p_ch4_bio) + conv_rho* (eghg_bio(i,1,j,p_ebio_ch4wet) + eghg_bio(i,1,j,p_ebio_ch4soil) & + eghg_bio(i,1,j,p_ebio_ch4term)) + else + if (p_e_ch4nat > 1) then + chem(i,1,j,p_ch4_bio)= chem(i,1,j,p_ch4_bio) + conv_rho*emis_ant(i,k,j,p_e_ch4nat) ! wetland is in emis_ant array + chem(i,1,j,p_c13_bio)= chem(i,1,j,p_c13_bio) + conv_rho*emis_ant(i,k,j,p_e_c13nat) + chem(i,1,j,p_eth_bio)= chem(i,1,j,p_eth_bio) + conv_rho*emis_ant(i,k,j,p_e_ethnat) ! biogenic + end if + end if end if ENDDO + ENDDO ENDDO + !JianHe: placeholder, we can do oh loss, cl loss, soil uptake, etc later + !calculate oh loss (ghg_sink=1)here + IF ((config_flags%ghg_sink > 0) .AND. present(ghg_oh)) THEN + call ghg_chem_driver(dtstep,config_flags, & + t_phy,chem,rho_phy,ghg_oh, & + ids,ide, jds,jde, kds,kde, & + ims,ime, jms,jme, kms,kme, & + its,ite, jts,jte, kts,kte) + END IF + END IF + + END SUBROUTINE add_ghg_fluxes !************************************************************************************************** SUBROUTINE VPRM ( ids,ide, jds,jde, & diff --git a/chem/module_input_chem_data.F b/chem/module_input_chem_data.F index be446ce428..60ce627258 100755 --- a/chem/module_input_chem_data.F +++ b/chem/module_input_chem_data.F @@ -391,7 +391,7 @@ SUBROUTINE setup_gasprofile_maps(chem_opt, numgas) case (MOZART_MOSAIC_4BIN_AQ_KPP) call wrf_debug("setup_profile_maps: nothing done for mozart_mosaic_4bin_aq_kpp") - case (CO2_TRACER,GHG_TRACER) + case (CO2_TRACER,GHG_TRACER,GHG_ISOTOPE) !JianHe call wrf_debug("setup_profile_maps: nothing done for the GHG options") case default @@ -757,7 +757,8 @@ SUBROUTINE input_chem_profile (si_grid) si_grid%chem(ims:ime,kms:kme,jms:jme,p_oc1 ) = 1.e-2 si_grid%chem(ims:ime,kms:kme,jms:jme,p_oc2 ) = 1.e-2 si_grid%chem(ims:ime,kms:kme,jms:jme,p_p25 ) = 1. - ELSE IF ( si_grid%chem_opt==CO2_TRACER .OR. si_grid%chem_opt==GHG_TRACER ) THEN + ELSE IF ( si_grid%chem_opt==CO2_TRACER .OR. si_grid%chem_opt==GHG_TRACER & + .OR. si_grid%chem_opt==GHG_ISOTOPE ) THEN !JianHe ! Do nothing, since for GHGs initialization is done in chemics_init.F ELSE CALL make_chem_profile (ims, ime, jms, jme, kms, kme, num_chem, numgas, & @@ -1515,12 +1516,22 @@ SUBROUTINE bdy_chem_value_ghg ( chem, nch ) if( nch==p_co2_bck .OR. nch==p_co2_bio .OR. nch==p_co2_oce .OR. nch==p_co2_ant & .OR. nch==p_co2_bbu .OR. nch==p_co2_tst ) then - chem = 380. -else if( nch==p_co_bck .OR. nch==p_co_ant .OR. nch==p_co_bbu .OR. nch==p_co_tst) then + chem = 420. +else if( nch==p_co_bck .OR. nch==p_co_ant .OR. nch==p_co_bbu & + .OR. nch==p_co_tst) then chem = 0.1 +else if( nch==p_eth_bck .OR. nch==p_eth_ant .OR. nch==p_eth_bbu & + .OR. nch==p_eth_bio .OR. nch==p_eth_tst .OR. nch==p_eth_ong) then + chem = 1.e-3 ! 1000 ppt else if( nch==p_ch4_bck .OR. nch==p_ch4_bio .OR. nch==p_ch4_ant & - .OR. nch==p_ch4_bbu .OR. nch==p_ch4_tst ) then - chem = 1.77 + .OR. nch==p_ch4_bbu .OR. nch==p_ch4_tst .OR. nch==p_ch4_ong & !JianHe + .OR. nch==p_ch4_agr .OR. nch==p_ch4_wst .OR. nch==p_ch4_wet) then + chem = 1.9 +!JianHe: additial ic for methane c13 isotop +else if( nch==p_c13_bck .OR. nch==p_c13_bio .OR. nch==p_c13_ant & + .OR. nch==p_c13_bbu .OR. nch==p_c13_tst .OR. nch==p_c13_ong & !JianHe + .OR. nch==p_c13_agr .OR. nch==p_c13_wst .OR. nch==p_c13_wet) then + chem = 0.02 ! ppm else chem = 1.e-12 end if @@ -1538,6 +1549,7 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & have_bcs_chem, & u, v, config_flags, alt, & t,pb,p,t0,p1000mb,rcp,ph,phb,g, & + qv, & !JianHe spec_zone, ic,julday, & ids,ide, jds,jde, kds,kde, & ! domain dims ims,ime, jms,jme, kms,kme, & ! memory dims @@ -1571,6 +1583,7 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), INTENT(IN ) :: u REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), INTENT(IN ) :: v REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), INTENT(IN ) :: ph,phb,t,pb,p + REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), INTENT(IN ), OPTIONAL :: qv !JianHe REAL, INTENT (IN) :: g,rcp,t0,p1000mb TYPE( grid_config_rec_type ), intent(IN) :: config_flags @@ -1692,7 +1705,8 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & i_bdy_method = 8 else if (config_flags%chem_opt == CHEM_VOLC_4BIN) then i_bdy_method = 8 - else if (config_flags%chem_opt==CO2_TRACER .OR. config_flags%chem_opt==GHG_TRACER) then + else if (config_flags%chem_opt==CO2_TRACER .OR. config_flags%chem_opt==GHG_TRACER & + .OR. config_flags%chem_opt==GHG_ISOTOPE ) then !JianHe i_bdy_method = 16 ! CALL wrf_message( "For GHGs strongly recommended to include LBCs from a global model!" ) else if (config_flags%chem_opt == cbmz_cam_mam3_noaq .or. & @@ -1707,6 +1721,7 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & end if end if if (have_bcs_chem) i_bdy_method =6 + if ((have_bcs_chem) .and. (config_flags%chem_opt==GHG_ISOTOPE) ) i_bdy_method = 666 if (ic .lt. param_first_scalar) i_bdy_method = 0 !---------------------------------------------------------------------- @@ -1780,6 +1795,8 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & convfac=(p(i,k,j)+pb(i,k,j))/rgasuniv/tempfac CALL bdy_chem_value_cam_mam( & chem(i,k,j), z(i,k,j), ic, config_flags, alt(i,k,j), convfac, g ) + else if (i_bdy_method .eq. 666) then + CALL bdy_chem_value_gcm_ghg (qv(i,k,j), chem(i,k,j),chem_bys(i,k,1),chem_btys(i,k,1),dt,ic) else chem(i,k,j) = chem_bv_def endif @@ -1850,6 +1867,8 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & convfac=(p(i,k,j)+pb(i,k,j))/rgasuniv/tempfac CALL bdy_chem_value_cam_mam( & chem(i,k,j), z(i,k,j), ic, config_flags, alt(i,k,j), convfac, g ) + else if (i_bdy_method .eq. 666) then + CALL bdy_chem_value_gcm_ghg (qv(i,k,j),chem(i,k,j),chem_bye(i,k,1),chem_btye(i,k,1),dt,ic) else chem(i,k,j) = chem_bv_def endif @@ -1920,6 +1939,8 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & convfac=(p(i,k,j)+pb(i,k,j))/rgasuniv/tempfac CALL bdy_chem_value_cam_mam( & chem(i,k,j), z(i,k,j), ic, config_flags, alt(i,k,j), convfac, g ) + else if (i_bdy_method .eq. 666) then + CALL bdy_chem_value_gcm_ghg (qv(i,k,j), chem(i,k,j),chem_bxs(j,k,1),chem_btxs(j,k,1),dt,ic) else chem(i,k,j) = chem_bv_def endif @@ -1990,6 +2011,8 @@ SUBROUTINE flow_dep_bdy_chem ( chem, & convfac=(p(i,k,j)+pb(i,k,j))/rgasuniv/tempfac CALL bdy_chem_value_cam_mam( & chem(i,k,j), z(i,k,j), ic, config_flags, alt(i,k,j), convfac, g ) + else if (i_bdy_method .eq. 666) then + CALL bdy_chem_value_gcm_ghg (qv(i,k,j), chem(i,k,j),chem_bxe(j,k,1),chem_btxe(j,k,1),dt,ic) else chem(i,k,j) = chem_bv_def endif @@ -2356,6 +2379,47 @@ SUBROUTINE bdy_chem_value_gcm ( chem, chem_b, chem_bt, dt,ic) RETURN END SUBROUTINE bdy_chem_value_gcm !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!JianHe +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + SUBROUTINE bdy_chem_value_gcm_ghg (qv, chem, chem_b, chem_bt, dt,ic) + + IMPLICIT NONE + + REAL, intent(IN) :: qv + REAL, intent(OUT) :: chem + REAL, intent(IN) :: chem_b + REAL, intent(IN) :: chem_bt + REAL, intent(IN) :: dt + INTEGER, intent(IN) :: ic + + + CHARACTER (LEN=80) :: message +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +! if( nch .GT. numgas) then +! message = ' Input_chem_profile: wrong number of chemical species' +! return +! CALL WRF_ERROR_FATAL ( message ) +! endif + + if( ic==p_co2_bck .OR. ic==p_co2_bio .OR. ic==p_co2_oce .OR. ic==p_co2_ant & + .OR. ic==p_co2_bbu .OR. ic==p_co2_tst ) then + chem = 420. + else if( ic==p_co_bck .OR. ic==p_co_ant .OR. ic==p_co_bbu .OR. ic==p_co_tst) then + chem = 0.1 + else if( ic==p_ch4_bck .OR. ic==p_ch4_ant .OR. ic==p_ch4_bbu .OR. ic==p_ch4_tst & + .OR. ic==p_ch4_bio .OR. ic==p_ch4_ong .OR. ic==p_ch4_agr .OR. ic==p_ch4_wst & + .OR. ic==p_ch4_wet ) then + !CarbonTracker-CH4 bdy in dry air mole fractions + chem=max(epsilc,(chem_b + chem_bt * dt)/(1.+qv/0.622)) + else + chem=max(epsilc,chem_b + chem_bt * dt) + end if + + !print*,'after',chem + RETURN + END SUBROUTINE bdy_chem_value_gcm_ghg +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SUBROUTINE cv_mmdd_jday ( YY, MM, DD, JDAY) diff --git a/chem/module_plumerise1.F b/chem/module_plumerise1.F index 5e58a97cd8..de949c043e 100644 --- a/chem/module_plumerise1.F +++ b/chem/module_plumerise1.F @@ -207,6 +207,16 @@ subroutine plumerise_driver (id,ktau,dtstep, & ebu(i,kts,j,p_ebu_ch4) = ebu_in(i,1,j,p_ebu_in_ch4) enddo enddo + !JianHe + elseif ( config_flags%biomass_burn_opt == BIOMASSB_GHG2 ) then + do j=jts,jte + do i=its,ite + ebu(i,kts,j,p_ebu_co) = ebu_in(i,1,j,p_ebu_in_co) + ebu(i,kts,j,p_ebu_eth) = ebu_in(i,1,j,p_ebu_in_eth) + ebu(i,kts,j,p_ebu_ch4) = ebu_in(i,1,j,p_ebu_in_ch4) + ebu(i,kts,j,p_ebu_c13) = ebu_in(i,1,j,p_ebu_in_c13) + enddo + enddo endif ! do nv=1,num_ebu diff --git a/dyn_em/solve_em.F b/dyn_em/solve_em.F index 92d5b73fed..c0d5c47f39 100644 --- a/dyn_em/solve_em.F +++ b/dyn_em/solve_em.F @@ -2601,6 +2601,7 @@ END SUBROUTINE CMAQ_DRIVER grid%have_bcs_chem, & grid%ru_m, grid%rv_m, config_flags,grid%alt, & grid%t_1,grid%pb,grid%p,t0,p1000mb,rcp,grid%ph_2,grid%phb,g, & + moist(ims,kms,jms,p_qv), & !JianHe grid%spec_zone,ic,grid%julday, & ids,ide, jds,jde, kds,kde, & ! domain dims ims,ime, jms,jme, kms,kme, & ! memory dims diff --git a/dyn_em/start_em.F b/dyn_em/start_em.F index 941b64a1c5..cf9cae5d35 100644 --- a/dyn_em/start_em.F +++ b/dyn_em/start_em.F @@ -1819,8 +1819,8 @@ SUBROUTINE start_domain_em ( grid, allowed_to_read & enddo enddo - CALL chem_init (grid%id,chem,emis_ant,scalar,grid%dt,grid%bioemdt,grid%photdt, & - grid%chemdt, & + CALL chem_init (grid%id,chem,emis_ant,grid%ghg_oh, & !JianHe + scalar,grid%dt,grid%bioemdt,grid%photdt,grid%chemdt, & grid%stepbioe,grid%stepphot,grid%stepchem,grid%stepfirepl, & grid%plumerisefire_frq,z_at_w,grid%xlat,grid%xlong,g, & grid%aerwrf,config_flags,grid, & diff --git a/share/dfi.F b/share/dfi.F index 0077d9b00a..6ee295ac33 100644 --- a/share/dfi.F +++ b/share/dfi.F @@ -181,6 +181,7 @@ END SUBROUTINE rebalance_driver_dfi CALL nl_set_io_form_auxinput13 (grid%id, 0) CALL nl_set_io_form_auxinput14 (grid%id, 0) CALL nl_set_io_form_auxinput15 (grid%id, 0) + CALL nl_set_io_form_auxinput18 (grid%id, 0) #endif ! set diffusion to zero for backward integration @@ -435,6 +436,7 @@ END SUBROUTINE start_domain CALL nl_set_io_form_auxinput13(grid%id, grid%io_form_auxinput13) CALL nl_set_io_form_auxinput14(grid%id, grid%io_form_auxinput14) CALL nl_set_io_form_auxinput15(grid%id, grid%io_form_auxinput15) + CALL nl_set_io_form_auxinput18(grid%id, grid%io_form_auxinput18) ! This resets the open file handles associated with the chemistry ! auxinputs. It may be a good idea to do this with other auxinputs as well. @@ -449,6 +451,7 @@ END SUBROUTINE start_domain grid%auxinput13_oid = 0 grid%auxinput14_oid = 0 grid%auxinput15_oid = 0 + grid%auxinput18_oid = 0 #endif #if (EM_CORE == 1) @@ -2789,6 +2792,7 @@ END SUBROUTINE Setup_Timekeeping CALL nl_set_io_form_auxinput13 (grid%id, 0) CALL nl_set_io_form_auxinput14 (grid%id, 0) CALL nl_set_io_form_auxinput15 (grid%id, 0) + CALL nl_set_io_form_auxinput18 (grid%id, 0) #endif #if (EM_CORE == 1) diff --git a/share/input_wrf.F b/share/input_wrf.F index 76631def2c..75a21a3558 100644 --- a/share/input_wrf.F +++ b/share/input_wrf.F @@ -1124,7 +1124,7 @@ SUBROUTINE input_wrf ( fid , grid , config_flags , switch , ierr ) CASE ( input_only, auxinput1_only, auxinput2_only, & auxinput3_only, auxinput4_only, auxinput5_only, & auxinput6_only, auxinput7_only, auxinput8_only, & - auxinput9_only, auxinput10_only, auxinput17_only ) + auxinput9_only, auxinput10_only, auxinput17_only, auxinput18_only ) !JianHe #if ( WRF_CHEM == 1 ) IF( (config_flags%io_style_emissions .eq. 1) .and. & ((switch.eq.auxinput5_only) .or. (switch.eq.auxinput6_only) .or. & diff --git a/share/mediation_integrate.F b/share/mediation_integrate.F index fb12f2eaed..e6fc567dac 100644 --- a/share/mediation_integrate.F +++ b/share/mediation_integrate.F @@ -213,6 +213,25 @@ SUBROUTINE med_before_solve_io ( grid , config_flags ) CALL WRFU_AlarmRingerOff( grid%alarms( ialarm ), rc=rc ) ENDIF ENDIF + !JianHe: + ELSE IF( ialarm .EQ. AUXINPUT18_ALARM .AND. config_flags%chem_opt .EQ. 18 ) THEN + IF( config_flags%ghg_sink .GE. 1 ) THEN + IF( WRFU_AlarmIsRinging( grid%alarms( ialarm ), rc=rc ) .OR. & + ((config_flags%restart) .AND. ( currTime .EQ. startTime ))) THEN + WRITE ( message , FMT='(A,i3,A,i3)') 'Input data processed for aux input ',& + ialarm - first_auxinput + 1, ' for domain ',grid%id + call wrf_debug(15,' CALL med_read_ghg_oh ') + CALL med_read_ghg_oh ( grid , config_flags ) + CALL WRFU_AlarmRingerOff( grid%alarms( ialarm ), rc=rc ) + call wrf_debug(15,' Back from CALL med_read_ghg_oh ') + ENDIF + ELSE + IF( WRFU_AlarmIsRinging( grid%alarms( ialarm ), rc=rc ) ) THEN + CALL med_auxinput_in ( grid, ialarm, config_flags ) + CALL WRFU_AlarmRingerOff( grid%alarms( ialarm ), rc=rc ) + ENDIF + ENDIF + #endif ELSE IF( ialarm .EQ. AUXINPUT17_ALARM ) THEN IF( config_flags%qna_update .EQ. 1) THEN @@ -2445,6 +2464,83 @@ SUBROUTINE med_read_wrf_chem_emissopt3 ( grid , config_flags ) CALL wrf_debug (00 , 'mediation_integrate: med_read_wrf_chem_fireemissions: exit' ) END SUBROUTINE med_read_wrf_chem_emissopt3 + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!JianHe: read external oh profiles +SUBROUTINE med_read_ghg_oh ( grid , config_flags ) + ! Driver layer + USE module_domain , ONLY : domain , domain_clock_get + USE module_io_domain + USE module_timing + USE module_configure , ONLY : grid_config_rec_type + ! Model layer + USE module_bc_time_utilities +#ifdef DM_PARALLEL + USE module_dm +#endif + USE module_date_time + USE module_utility + + IMPLICIT NONE + + ! Arguments + TYPE(domain) :: grid + + TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags + + ! Local data + LOGICAL, EXTERNAL :: wrf_dm_on_monitor + + INTEGER :: ierr, efid + REAL :: time, tupdate + real, allocatable :: dumc0(:,:,:) + CHARACTER (LEN=256) :: message, current_date_char, date_string + CHARACTER (LEN=256) :: inpname + +#include "wrf_io_flags.h" + + CALL domain_clock_get( grid, current_timestr=current_date_char ) + +!----- +! use dated oh files whose length is +! set via frames_per_auxinput18... + + WRITE(message,*)'mediation_integrate: med_read_ghg_oh: Read oh for time ',TRIM(current_date_char) + CALL wrf_message( TRIM(message) ) + +! +! Code to read hourly oh files... +! + if( grid%auxinput18_oid == 0 ) then + CALL construct_filename2a(inpname , grid%ghgoh_inname, grid%id , 2, current_date_char) + WRITE(message,*)'mediation_integrate: med_read_ghg_oh: Open file ',TRIM(inpname) + CALL wrf_message( TRIM(message) ) + CALL open_r_dataset ( grid%auxinput18_oid, TRIM(inpname) , grid , config_flags, & + "DATASET=AUXINPUT18", ierr ) + IF ( ierr .NE. 0 ) THEN + WRITE( message , * ) 'med_read_ghg_oh: error opening ', TRIM( inpname ) + CALL wrf_error_fatal( TRIM( message ) ) + ENDIF + end if +! +! Read oh data. +! + CALL wrf_debug (100 , 'mediation_integrate: calling input_auxinput18' ) + CALL input_auxinput18 ( grid%auxinput18_oid, grid , config_flags , ierr ) +! +! If reached the indicated number of frames in the emissions file, close it. +! + grid%ohframes = grid%ohframes + 1 + IF ( grid%ohframes >= config_flags%frames_per_auxinput18 ) THEN + CALL close_dataset ( grid%auxinput18_oid , config_flags , "DATASET=AUXINPUT18" ) + grid%ohframes = 0 + grid%auxinput18_oid = 0 + ENDIF + + CALL wrf_debug (00 , 'mediation_integrate: med_read_ghg_oh: exit' ) + +END SUBROUTINE med_read_ghg_oh + #endif #endif @@ -2511,3 +2607,5 @@ SUBROUTINE med_read_qna_emissions ( grid , config_flags ) CALL wrf_debug (00 , 'mediation_integrate: med_read_qna_emissions: exit' ) END SUBROUTINE med_read_qna_emissions + + diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index 1acb3bda82..d0ced54ee3 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -1516,6 +1516,65 @@ END FUNCTION bep_bem_ngr_u END IF END IF +!JianHe: +#if (WRF_CHEM == 1) +!----------------------------------------------------------------------- +! If ghg_sink = 0, set io_form_auxinput18 to 0 so WRF will not try to +! input the data; auxinput_interval must also be 0 +!----------------------------------------------------------------------- + IF ( model_config_rec%ghg_sink .EQ. 0 ) THEN + model_config_rec%io_form_auxinput18 = 0 + DO i = 1, model_config_rec % max_dom + wrf_err_message = '--- NOTE: ghg_sink is 0, ' // & + 'setting io_form_auxinput18 = 0 and auxinput18_interval = 0 for all domains' + CALL wrf_debug ( 1, TRIM( wrf_err_message ) ) + model_config_rec%auxinput18_interval(i) = 0 + model_config_rec%auxinput18_interval_y(i) = 0 + model_config_rec%auxinput18_interval_d(i) = 0 + model_config_rec%auxinput18_interval_h(i) = 0 + model_config_rec%auxinput18_interval_m(i) = 0 + model_config_rec%auxinput18_interval_s(i) = 0 + ENDDO + ELSE + IF ( model_config_rec%io_form_auxinput18 .EQ. 0 ) THEN + wrf_err_message = '--- ERROR: If ghg_sink /= 0, io_form_auxinput18 must be /= 0' + CALL wrf_message ( wrf_err_message ) + wrf_err_message = '--- Set io_form_auxinput18 in the time_control namelist (probably to 2).' + CALL wrf_debug ( 0, TRIM( wrf_err_message ) ) + count_fatal_error = count_fatal_error + 1 + END IF + END IF + +!----------------------------------------------------------------------- +! If ghg_sink = 1, we need to make sure that two nml items are set: +! 1. io_form_auxinput18 = 2 (only for one domain) +! 2. auxinput18_interval = NON-ZERO (just check most coarse domain) +!----------------------------------------------------------------------- + + IF ( model_config_rec%ghg_sink .GE. 1 ) THEN + IF ( model_config_rec%io_form_auxinput18 .EQ. 0 ) THEN + wrf_err_message = '--- ERROR: If ghg_sink /= 0, io_form_auxinput18 must be /= 0' + CALL wrf_debug ( 0, TRIM(wrf_err_message) ) + wrf_err_message = '--- Set io_form_auxinput18 in the time_control namelist (probably to 2).' + CALL wrf_debug ( 0, TRIM( wrf_err_message ) ) + count_fatal_error = count_fatal_error + 1 + END IF + + IF ( ( model_config_rec%auxinput18_interval(1) .EQ. 0 ) .AND. & + ( model_config_rec%auxinput18_interval_y(1) .EQ. 0 ) .AND. & + ( model_config_rec%auxinput18_interval_d(1) .EQ. 0 ) .AND. & + ( model_config_rec%auxinput18_interval_h(1) .EQ. 0 ) .AND. & + ( model_config_rec%auxinput18_interval_m(1) .EQ. 0 ) .AND. & + ( model_config_rec%auxinput18_interval_s(1) .EQ. 0 ) ) THEN + wrf_err_message = '--- ERROR: If ghg_sink /= 0, one of the auxinput18_interval settings must be /= 0' + CALL wrf_debug ( 0, TRIM(wrf_err_message) ) + wrf_err_message = '--- Set auxinput18_interval_s to the same value as interval_seconds (usually a pretty good guess).' + CALL wrf_debug ( 0, TRIM( wrf_err_message ) ) + count_fatal_error = count_fatal_error + 1 + END IF + END IF +#endif + !----------------------------------------------------------------------- ! The qndropsource relies on the flag PROGN (when not running chemistry) ! and is always allocated when running WRF Chem. diff --git a/share/module_chem_share.F b/share/module_chem_share.F index 890f8c43cc..8ae9045e14 100644 --- a/share/module_chem_share.F +++ b/share/module_chem_share.F @@ -74,7 +74,8 @@ integer FUNCTION get_last_gas(chem_opt) case (MOZART_MOSAIC_4BIN_AQ_KPP) get_last_gas = p_meko2 - case (CO2_TRACER,GHG_TRACER) ! No gas chemistry or deposition for GHGs + case (CO2_TRACER,GHG_TRACER,GHG_ISOTOPE) ! No gas chemistry or deposition for GHGs + ! JianHe: include GHG_ISOTOPE get_last_gas = 0 case ( CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ ) get_last_gas = p_soag diff --git a/share/set_timekeeping.F b/share/set_timekeeping.F index bd52b7184e..54b1f72689 100644 --- a/share/set_timekeeping.F +++ b/share/set_timekeeping.F @@ -537,6 +537,78 @@ SUBROUTINE Setup_Timekeeping ( grid ) CALL WRFU_AlarmRingerOn( grid%alarms( AUXINPUT5_ALARM ), rc=rc ) ! end for wrf chem emiss input !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +!JianHe: +! AUXINPUT18_ INTERVAL +! auxinput18_interval is left there (and means minutes) for consistency, but +! auxinput18_interval_m will take precedence if specified + CALL nl_get_auxinput18_interval( grid%id, auxinput18_interval ) ! same as minutes + CALL nl_get_auxinput18_interval_d( grid%id, auxinput18_interval_d ) + CALL nl_get_auxinput18_interval_h( grid%id, auxinput18_interval_h ) + CALL nl_get_auxinput18_interval_m( grid%id, auxinput18_interval_m ) + CALL nl_get_auxinput18_interval_s( grid%id, auxinput18_interval_s ) + IF ( auxinput18_interval_m .EQ. 0 ) auxinput18_interval_m = auxinput18_interval + + IF ( MAX( auxinput18_interval_d, & + auxinput18_interval_h, auxinput18_interval_m , auxinput18_interval_s ) .GT. 0 ) THEN + CALL WRFU_TimeIntervalSet( interval, D=auxinput18_interval_d, & + H=auxinput18_interval_h, M=auxinput18_interval_m, S=auxinput18_interval_s, rc=rc ) + CALL wrf_check_error( WRFU_SUCCESS, rc, & + 'WRFU_TimeIntervalSet(auxinput18_interval) FAILED', & + __FILE__ , & + __LINE__ ) + ELSE + interval = padding_interval + ENDIF + + CALL nl_get_auxinput18_begin_y( grid%id, auxinput18_begin_y ) + CALL nl_get_auxinput18_begin_d( grid%id, auxinput18_begin_d ) + CALL nl_get_auxinput18_begin_h( grid%id, auxinput18_begin_h ) + CALL nl_get_auxinput18_begin_m( grid%id, auxinput18_begin_m ) + CALL nl_get_auxinput18_begin_s( grid%id, auxinput18_begin_s ) + IF ( MAX( auxinput18_begin_y, auxinput18_begin_d, & + auxinput18_begin_h, auxinput18_begin_m , auxinput18_begin_s ) .GT. 0 ) THEN + CALL WRFU_TimeIntervalSet( begin_time , D=auxinput18_begin_d, & + H=auxinput18_begin_h, M=auxinput18_begin_m, S=auxinput18_begin_s, rc=rc ) + CALL wrf_check_error( WRFU_SUCCESS, rc, & + 'WRFU_TimeIntervalSet(auxinput18_begin) FAILED', & + __FILE__ , & + __LINE__ ) + ELSE + begin_time = zero_time + ENDIF + CALL nl_get_auxinput18_end_y( grid%id, auxinput18_end_y ) + CALL nl_get_auxinput18_end_d( grid%id, auxinput18_end_d ) + CALL nl_get_auxinput18_end_h( grid%id, auxinput18_end_h ) + CALL nl_get_auxinput18_end_m( grid%id, auxinput18_end_m ) + CALL nl_get_auxinput18_end_s( grid%id, auxinput18_end_s ) + IF ( MAX( auxinput18_end_y, auxinput18_end_d, & + auxinput18_end_h, auxinput18_end_m , auxinput18_end_s ) .GT. 0 ) THEN + CALL WRFU_TimeIntervalSet( end_time , D=auxinput18_end_d, & + H=auxinput18_end_h, M=auxinput18_end_m, S=auxinput18_end_s, rc=rc ) + CALL wrf_check_error( WRFU_SUCCESS, rc, & + 'WRFU_TimeIntervalSet(auxinput18_end) FAILED', & + __FILE__ , & + __LINE__ ) + ELSE + end_time = padding_interval + ENDIF + CALL domain_alarm_create( grid, AUXINPUT18_ALARM, interval, begin_time, end_time ) +!TBH: Should be OK to remove the "#else" section and the code it contains +!TBH: because later code overwrites grid%alarms( AUXINPUT18_ALARM )... +!TBH: In fact, by setting namelist values for auxinput18 correctly, it ought +!TBH: to be possible to get rid of all "#if ( WRF_CHEM == 1 )" bits in this file... + CALL WRFU_AlarmEnable( grid%alarms( AUXINPUT18_ALARM ), rc=rc ) + CALL WRFU_AlarmRingerOn( grid%alarms( AUXINPUT18_ALARM ), rc=rc ) +! TBH: NOTE: Proper setting of namelist variables for auxinput18 ought to +! TBH: make this hard-coded bit unnecessary. +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! add for wrf_chem oh input + CALL WRFU_AlarmEnable( grid%alarms( AUXINPUT18_ALARM ), rc=rc ) + CALL WRFU_AlarmRingerOn( grid%alarms( AUXINPUT18_ALARM ), rc=rc ) +! end for wrf chem oh input +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + #endif ! without this test, it's possible for the value of the WRF_ALARM_SECS_TIL_NEXT_RING