Skip to content

Commit

Permalink
Separate chem_opt=100 from opts 108 and 109 (#1798)
Browse files Browse the repository at this point in the history
This splits chem_opt=100 from chem_opt=108 and chem_opt=109 by renamng the original module for chem_opt=100 to *_het and removing the refrences to CLNO2, HCL, and the crustal species from options 108 and 109. Relatedly, the aerosol pointers in the module_data* files are adjusted to reflect this change. In this configuration, ISORROPIA and the N2O5 heterogenous chemistry option will only be available with option 100, but both namelist options must be set.

TYPE: bug fix/enhancment

KEYWORDS: MADE-SORGAM, SOA_VBS, heterogenous chemistry, crustal species, chemistry options

SOURCE: Jordan Schnell (CIRES/NOAA)

DESCRIPTION OF CHANGES:
Problem: Species in chem_opt=100 (HCL, CLNO2, MG, K, CA) are referenced by the aerosol module for chem_opt=108, 109 leading to memory mapping errors. Previous code allowed the user to run with ISORROPIA and N2O5 heterogenous chemistry without the necessary species. 

Solution:
See top

LIST OF MODIFIED FILES: 
M       Registry/registry.chem
M       Registry/registry.noahmp
M       chem/Makefile
M       chem/aerosol_driver.F
M       chem/depend.chem
M       chem/dry_dep_driver.F
M       chem/module_aerosols_soa_vbs.F
A       chem/module_aerosols_soa_vbs_het.F
M       chem/module_data_soa_vbs.F
A       chem/module_data_soa_vbs_het.F

TESTS CONDUCTED: 
1. Do mods fix problem? How can that be demonstrated, and was that test conducted?
2. The Jenkins tests have passed.

RELEASE NOTE: chem_opt=100 now separate from chem_opt=108 and 109. No ISORROPIA or N2O5 het for 108, 109.
  • Loading branch information
jordanschnell committed Jan 20, 2023
1 parent e32ac9a commit 9e97f22
Show file tree
Hide file tree
Showing 9 changed files with 9,289 additions and 652 deletions.
2 changes: 1 addition & 1 deletion Registry/registry.chem
Expand Up @@ -3904,7 +3904,7 @@ rconfig real af_lambda_start namelist,chem max_domains
rconfig real af_lambda_end namelist,chem max_domains 340. rh "end wavelength for AF output" "nm" ""
# Control for ISORROPIA in MADE/SORGAM schemes
rconfig logical do_isorropia namelist,chem 1 .false. rh "flag to use ISORROPIA"

rconfig logical do_n2o5het namelsit,chem 1 .false. rh "flag to do n2o5 heterogenous chemistry via chlorine pathway"

# CHEMISTRY PACKAGE DEFINITIONS
#
Expand Down
2 changes: 2 additions & 0 deletions chem/Makefile
Expand Up @@ -53,6 +53,7 @@ MODULES = \
module_data_rrtmgaeropt.o \
module_data_megan2.o \
module_data_soa_vbs.o \
module_data_soa_vbs_het.o \
module_data_sorgam.o \
module_data_sorgam_vbs.o \
module_ftuv_subs.o \
Expand Down Expand Up @@ -130,6 +131,7 @@ MODULES = \
module_sorgam_aqchem.o \
module_sorgam_vbs_aqchem.o \
module_aerosols_soa_vbs.o \
module_aerosols_soa_vbs_het.o \
module_aerosols_sorgam.o \
module_aerosols_sorgam_vbs.o \
module_bioemi_megan2.o \
Expand Down
25 changes: 23 additions & 2 deletions chem/aerosol_driver.F
Expand Up @@ -33,6 +33,7 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, &
USE module_data_sorgam
USE module_mosaic_driver, only: mosaic_aerchem_driver
USE module_aerosols_soa_vbs, only: soa_vbs_driver
USE module_aerosols_soa_vbs_het, only: soa_vbs_het_driver
USE module_aerosols_sorgam_vbs, only: sorgam_vbs_driver
USE module_data_soa_vbs, only: ldrog_vbs
USE module_cam_mam_aerchem_driver, only: cam_mam_aerchem_driver
Expand Down Expand Up @@ -298,7 +299,7 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
CASE ( RACM_SOA_VBS_KPP, RACM_SOA_VBS_AQCHEM_KPP, RACM_SOA_VBS_HET_KPP )
CASE ( RACM_SOA_VBS_KPP, RACM_SOA_VBS_AQCHEM_KPP )
CALL wrf_debug(15,'aerosols_driver calling soa_vbs_driver')
do ii=its,ite
do kk=kts,kte
Expand All @@ -311,11 +312,31 @@ SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, &
enddo
call soa_vbs_driver ( id,ktauc,dtstepc,t_phy,moist,aerwrf,p8w,t8w, &
alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
gamn2o5,cn2o5,kn2o5,yclno2,snu,sac, &
h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
vcsulf_old,vdrog3_vbs, &
config_flags%kemit,brch_ratio, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
CASE ( RACM_SOA_VBS_HET_KPP )
CALL wrf_debug(15,'aerosols_driver calling soa_vbs_het_driver')
do ii=its,ite
do kk=kts,kte
do jj=jts,jte
if(chem(ii,kk,jj,p_nu0).lt.1.e07)then
chem(ii,kk,jj,p_nu0)=1.e7
endif
enddo
enddo
enddo
call soa_vbs_het_driver ( id,ktauc,dtstepc,t_phy,moist,aerwrf,p8w,t8w, &
alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
gamn2o5,cn2o5,kn2o5,yclno2,snu,sac, &
h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
vcsulf_old,vdrog3_vbs, &
config_flags%kemit,brch_ratio, &
config_flags%do_isorropia, &
config_flags%do_n2o5het, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
Expand Down
36 changes: 19 additions & 17 deletions chem/depend.chem
Expand Up @@ -129,7 +129,7 @@ module_phot_mad.o: module_data_radm2.o

module_phot_fastj.o: module_mosaic_driver.o module_peg_util.o module_data_cbmz.o module_data_mosaic_therm.o

module_ftuv_driver.o: module_wave_data.o module_ftuv_subs.o module_data_sorgam.o module_data_soa_vbs.o
module_ftuv_driver.o: module_wave_data.o module_ftuv_subs.o module_data_sorgam.o module_data_soa_vbs.o module_data_soa_vbs_het.o

module_ftuv_subs.o: module_wave_data.o

Expand All @@ -139,15 +139,15 @@ module_input_tracer.o: module_input_tracer_data.o module_input_chem_data.o

module_input_tracer_data.o:

module_input_chem_data.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_cam_mam_initmixrats.o module_data_sorgam_vbs.o ../share/module_chem_share.o
module_input_chem_data.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_cam_mam_initmixrats.o module_data_sorgam_vbs.o ../share/module_chem_share.o

module_input_chem_bioemiss.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o
module_input_chem_bioemiss.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o

module_input_dust_errosion.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o
module_input_dust_errosion.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o

module_input_gocart_dms.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o
module_input_gocart_dms.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o

module_dep_simple.o: module_data_sorgam.o module_aerosols_soa_vbs.o ../share/module_HLaw.o module_chem_utilities.o
module_dep_simple.o: module_data_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o ../share/module_HLaw.o module_chem_utilities.o

module_mosaic_wetscav.o: module_data_mosaic_asect.o module_dep_simple.o

Expand All @@ -163,14 +163,16 @@ module_bioemi_megan2.o: module_data_megan2.o module_data_mgn2mech.o

module_vertmx_wrf.o:

module_emissions_anthropogenics.o: module_aerosols_sorgam.o module_aerosols_soa_vbs.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_data_sorgam.o: module_data_radm2.o

module_data_soa_vbs.o: module_data_radm2.o

module_data_soa_vbs_het.o: module_data_radm2.o

module_data_sorgam_vbs.o: module_data_radm2.o

module_cbmz_lsodes_solver.o: module_peg_util.o
Expand Down Expand Up @@ -231,15 +233,15 @@ module_mosaic_aerdynam_intr.o: module_mosaic_sect_intr.o module_mosaic_aerchem_i

module_mosaic_addemiss.o: module_data_mosaic_asect.o module_data_sorgam.o module_gocart_dust.o

module_dep_simple.o: module_data_sorgam.o module_aerosols_soa_vbs.o

module_mozcart_wetscav.o: ../share/module_HLaw.o module_chem_utilities.o

module_prep_wetscav_sorgam.o: module_mosaic_wetscav.o module_data_sorgam.o module_data_soa_vbs.o

module_aerosols_sorgam.o: module_data_sorgam.o module_mosaic_addemiss.o module_radm.o module_mosaic_wetscav.o

module_aerosols_soa_vbs.o: module_data_soa_vbs.o module_radm.o module_mosaic_addemiss.o module_isocom.o module_isofwd.o module_isorev.o
module_aerosols_soa_vbs.o: module_data_soa_vbs.o module_radm.o module_mosaic_addemiss.o

module_aerosols_soa_vbs_het.o: module_data_soa_vbs_het.o module_radm.o module_mosaic_addemiss.o module_isocom.o module_isofwd.o module_isorev.o

module_aerosols_sorgam_vbs.o: module_data_sorgam_vbs.o module_mosaic_wetscav.o

Expand Down Expand Up @@ -325,20 +327,20 @@ module_cam_mam_mz_aerosols_intr.o: ../phys/module_cam_shr_kind_mod.o ../phys/mo

module_cam_mam_wetdep.o: ../phys/module_cam_shr_kind_mod.o ../phys/module_cam_support.o

module_aer_drydep.o: module_data_sorgam.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_mosaic_drydep.o module_mosaic_driver.o module_cam_mam_aerchem_driver.o
module_aer_drydep.o: module_data_sorgam.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_mosaic_drydep.o module_mosaic_driver.o module_cam_mam_aerchem_driver.o


module_interpolate.o:

chemics_init.o: module_cbm4_initmixrats.o module_cbmz_initmixrats.o module_gocart_aerosols.o ../phys/module_data_gocart_dust.o module_data_gocart_seas.o module_data_gocartchem.o module_gocart_chem.o module_dep_simple.o module_ftuv_driver.o module_phot_mad.o module_gocart_chem.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs.o module_mixactivate_wrappers.o module_mosaic_driver.o module_input_chem_data.o module_cam_mam_init.o module_cam_mam_wetscav.o module_prep_wetscav_sorgam.o module_aerosols_sorgam_vbs.o module_phot_tuv.o ../share/module_HLaw.o module_ctrans_grell.o module_mozcart_wetscav.o ../share/module_chem_share.o
chemics_init.o: module_cbm4_initmixrats.o module_cbmz_initmixrats.o module_gocart_aerosols.o ../phys/module_data_gocart_dust.o module_data_gocart_seas.o module_data_gocartchem.o module_gocart_chem.o module_dep_simple.o module_ftuv_driver.o module_phot_mad.o module_gocart_chem.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_mixactivate_wrappers.o module_mosaic_driver.o module_input_chem_data.o module_cam_mam_init.o module_cam_mam_wetscav.o module_prep_wetscav_sorgam.o module_aerosols_sorgam_vbs.o module_phot_tuv.o ../share/module_HLaw.o module_ctrans_grell.o module_mozcart_wetscav.o ../share/module_chem_share.o

module_tropopause.o: module_interpolate.o

module_upper_bc_driver.o: module_tropopause.o

chem_driver.o: module_radm.o ../dyn_em/module_convtrans_prep.o module_chem_utilities.o module_data_radm2.o module_dep_simple.o module_bioemi_simple.o module_vertmx_wrf.o module_phot_mad.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_sorgam_vbs.o module_data_cbmz.o module_cbmz.o module_wetscav_driver.o dry_dep_driver.o emissions_driver.o module_input_tracer.o module_input_tracer_data.o module_tropopause.o module_upper_bc_driver.o module_ctrans_grell.o module_data_soa_vbs.o module_aer_opt_out.o module_data_sorgam.o module_gocart_so2so4.o ../phys/module_cu_camzm_driver.o module_cam_mam_gas_wetdep_driver.o module_dust_load.o module_chem_cup.o ../share/module_trajectory.o ../share/module_chem_share.o
chem_driver.o: module_radm.o ../dyn_em/module_convtrans_prep.o module_chem_utilities.o module_data_radm2.o module_dep_simple.o module_bioemi_simple.o module_vertmx_wrf.o module_phot_mad.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_aerosols_sorgam_vbs.o module_data_cbmz.o module_cbmz.o module_wetscav_driver.o dry_dep_driver.o emissions_driver.o module_input_tracer.o module_input_tracer_data.o module_tropopause.o module_upper_bc_driver.o module_ctrans_grell.o module_data_soa_vbs.o module_data_soa_vbs_het.o module_aer_opt_out.o module_data_sorgam.o module_gocart_so2so4.o ../phys/module_cu_camzm_driver.o module_cam_mam_gas_wetdep_driver.o module_dust_load.o module_chem_cup.o ../share/module_trajectory.o ../share/module_chem_share.o

aerosol_driver.o: module_data_sorgam.o module_aerosols_sorgam.o module_data_soa_vbs.o module_aerosols_soa_vbs.o module_aerosols_sorgam_vbs.o module_mosaic_driver.o
aerosol_driver.o: module_data_sorgam.o module_aerosols_sorgam.o module_data_soa_vbs.o module_aerosols_soa_vbs.o module_data_soa_vbs_het.o module_aerosols_soa_vbs_het.o module_aerosols_sorgam_vbs.o module_mosaic_driver.o

module_sorgam_aqchem.o: ../share/module_ctrans_aqchem.o module_data_sorgam.o

Expand All @@ -348,13 +350,13 @@ cloudchem_driver.o: module_mosaic_cloudchem.o module_sorgam_cloudchem.o module_s

photolysis_driver.o: module_phot_mad.o module_phot_fastj.o module_ftuv_driver.o module_phot_tuv.o

mechanism_driver.o: module_data_radm2.o module_radm.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_data_cbmz.o module_cbmz.o
mechanism_driver.o: module_data_radm2.o module_radm.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_data_cbmz.o module_cbmz.o

optical_driver.o: module_optical_averaging.o module_peg_util.o module_data_mosaic_therm.o

emissions_driver.o: module_add_emiss_burn.o module_data_radm2.o module_radm.o module_bioemi_simple.o module_bioemi_beis314.o module_bioemi_megan2.o module_emissions_anthropogenics.o module_cbmz_addemiss.o module_cb05_addemiss.o module_mosaic_addemiss.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_sorgam_vbs.o module_plumerise1.o module_gocart_dust.o module_gocart_dust_afwa.o module_uoc_dust.o module_gocart_seasalt.o module_ghg_fluxes.o module_lightning_nox_driver.o module_cam_mam_addemiss.o
emissions_driver.o: module_add_emiss_burn.o module_data_radm2.o module_radm.o module_bioemi_simple.o module_bioemi_beis314.o module_bioemi_megan2.o module_emissions_anthropogenics.o module_cbmz_addemiss.o module_cb05_addemiss.o module_mosaic_addemiss.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs_het.o module_aerosols_sorgam_vbs.o module_plumerise1.o module_gocart_dust.o module_gocart_dust_afwa.o module_uoc_dust.o module_gocart_seasalt.o module_ghg_fluxes.o module_lightning_nox_driver.o module_cam_mam_addemiss.o

dry_dep_driver.o: module_data_radm2.o module_aer_drydep.o module_dep_simple.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_sorgam_vbs.o module_mosaic_drydep.o module_mixactivate_wrappers.o ../phys/module_mixactivate.o module_cam_mam_drydep.o ../phys/module_data_cam_mam_asect.o ../phys/module_data_cam_mam_aero.o ../phys/module_cam_support.o
dry_dep_driver.o: module_data_radm2.o module_aer_drydep.o module_dep_simple.o module_aerosols_sorgam.o module_aerosols_soa_vbs.o module_aerosols_soa_vbs.o module_aerosols_sorgam_vbs.o module_mosaic_drydep.o module_mixactivate_wrappers.o ../phys/module_mixactivate.o module_cam_mam_drydep.o ../phys/module_data_cam_mam_asect.o ../phys/module_data_cam_mam_aero.o ../phys/module_cam_support.o

module_wetscav_driver.o: module_mosaic_wetscav.o module_aerosols_sorgam.o module_aerosols_sorgam_vbs.o module_mozcart_wetscav.o ../phys/module_data_cam_mam_aero.o module_cam_mam_wetscav.o module_aerosols_soa_vbs.o module_prep_wetscav_sorgam.o

Expand Down
14 changes: 13 additions & 1 deletion chem/dry_dep_driver.F
Expand Up @@ -51,6 +51,7 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, &
sorgam_vbs_mixactivate, soa_vbs_mixactivate
USE module_aer_drydep
USE module_aerosols_soa_vbs, only: soa_vbs_depdriver
USE module_aerosols_soa_vbs_het, only: soa_vbs_het_depdriver

USE module_cam_mam_drydep, only: cam_mam_drydep_driver

Expand Down Expand Up @@ -569,7 +570,7 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
!!! TUCCELLA
CASE ( RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP,RACM_SOA_VBS_HET_KPP )
CASE ( RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP )
CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR SOA_VBS AEROSOLS')
call soa_vbs_depdriver (id,config_flags,ktau,dtstep, &
ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
Expand All @@ -580,6 +581,17 @@ subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
CASE ( RACM_SOA_VBS_HET_KPP )
CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR SOA_VBS_HET AEROSOLS')
call soa_vbs_het_depdriver (id,config_flags,ktau,dtstep, &
ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
aer_res,ddvel(:,:,numgas+1:num_chem), &
num_chem-numgas, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
CASE (CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ)
CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR CAM_MAM AEROSOLS')
call cam_mam_drydep_driver( &
Expand Down

0 comments on commit 9e97f22

Please sign in to comment.