Skip to content

cam6_4_084: Nitrogen chemistry updates relevant to the thermosphere #1283

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Apr 8, 2025
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bld/configure
Original file line number Diff line number Diff line change
Expand Up @@ -685,8 +685,8 @@ $waccm_phys = $cfg_ref->get('waccm_phys');

if ($print>=2) { print "WACCM physics: $waccm_phys$eol"; }

# WACCM includes 3 age of air tracers by default
if ($chem_pkg =~ /waccm_ma/ or $chem_pkg =~ /waccm_tsmlt/ or $chem_pkg =~ /waccm_t4ma/) {
# WACCM and CAM-Chem includes 3 age of air tracers by default
if ($chem_pkg =~ /waccm_/ or $chem_pkg =~ /trop_strat_/) {
$cfg_ref->set('age_of_air_trcs', 1);
}

Expand Down
18 changes: 12 additions & 6 deletions bld/namelist_files/namelist_defaults_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,11 @@
<ncdata dyn="fv" hgrid="1.9x2.5" nlev="130" waccmx="1" ic_ymd="101" aquaplanet="1">atm/waccm/ic/waccmx_mam4_aqua_1.9x2.5_L130_c180803.nc</ncdata>
<ncdata dyn="se" hgrid="ne5np4" nlev="126" waccmx="1" >atm/waccm/ic/waccmx_aqua_ne5np4_126L_c210304.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="126" waccmx="1" >atm/waccm/ic/waccmx_ne16np4_126L_c200108.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="130" waccmx="1" >atm/waccm/ic/fx2000_phys-ionos-cpl_ne16_spinup03.cam.i.0002-01-01-00000_c201005.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="130" waccmx="1" >atm/waccm/ic/waccmx_ne16pg3_L130_c250318.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="126" waccmx="1" aquaplanet="1">atm/waccm/ic/waccmx_aqua_ne16np4_126L_c191108.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="126" waccmx="1" aquaplanet="1" ionosphere="none">atm/waccm/ic/waccmx4_neutral_aquap_ne16np4_126lev_c200827.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" nlev="130" waccmx="1" >atm/waccm/ic/fx2000_phys-ionos-cpl_ne30_spinup01.cam.i.0002-01-01-00000_c201014.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" npg="3" nlev="130" waccmx="1" >atm/waccm/ic/waccmx_ne30pg3_c231005.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" npg="3" nlev="130" waccmx="1" >atm/waccm/ic/waccmx_ne30pg3_L130_c250307.nc</ncdata>

<ncdata dyn="fv3" hgrid="C24" nlev="32" aquaplanet="1" ic_ymd="101" >atm/cam/inic/fv3/aqua_0006-01-01_C24_L32_c200625.nc</ncdata>
<ncdata dyn="fv3" hgrid="C48" nlev="32" aquaplanet="1" ic_ymd="101" >atm/cam/inic/fv3/aqua_0006-01-01_C48_L32_c200625.nc</ncdata>
Expand Down Expand Up @@ -257,7 +257,6 @@

<ncdata dyn="se" hgrid="ne5np4" nlev="66" ic_ymd="101">atm/waccm/ic/wa3_ne5np4_1950_spinup.cam2.i.1960-01-01-00000_c150810.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" nlev="70" ic_ymd="101">atm/waccm/ic/FW2000_ne30_L70_01-01-0001_c200602.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" nlev="70" npg="3" chem="waccm_sc_mam4">atm/waccm/ic/FWsc2000climo_ne30pg3_L70_0002-01-01_c221103.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" nlev="70" npg="3" ic_ymd="101">atm/waccm/ic/FW2000.ne30pg3_ne30pg3_nlev70_c230906.nc</ncdata>
<ncdata dyn="se" hgrid="ne30np4" nlev="110" ic_ymd="101">atm/waccm/ic/FWsc2000_ne30pg3_L110_01-01-0001_c200521.nc</ncdata>

Expand Down Expand Up @@ -305,7 +304,7 @@
<bnd_topo hgrid="ne3np4" >atm/cam/topo/se/ne3np4_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230717.nc</bnd_topo>
<bnd_topo hgrid="ne3np4" npg="3">atm/cam/topo/se/ne3pg3_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230209.nc</bnd_topo>
<bnd_topo hgrid="ne5np4" npg="3">atm/cam/topo/se/ne5pg3_nc3000_Co360_Fi001_MulG_PF_nullRR_Nsw064_20170516.nc</bnd_topo>
<bnd_topo hgrid="ne16np4" npg="3">atm/cam/topo/se/ne16pg3_nc3000_Co120_Fi001_PF_nullRR_Nsw084_20171012.nc</bnd_topo>
<bnd_topo hgrid="ne16np4" npg="3">atm/cam/topo/se/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc</bnd_topo>
<bnd_topo hgrid="ne30np4" npg="3">atm/cam/topo/se/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240720.nc</bnd_topo>
<bnd_topo hgrid="ne60np4" npg="3">atm/cam/topo/se/ne60pg3_nc3000_Co030_Fi001_PF_nullRR_Nsw021_20171012.nc</bnd_topo>
<bnd_topo hgrid="ne120np4" npg="3">atm/cam/topo/se/ne120pg3_nc3000_Co015_Fi001_PF_nullRR_Nsw010_20171014.nc</bnd_topo>
Expand Down Expand Up @@ -3171,8 +3170,10 @@
<se_hypervis_subcycle > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle waccm_phys="1" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" > 4 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" waccm_phys="1" model_top="none"> 10 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne16np4" waccm_phys="1" waccmx="0" model_top="none"> 9 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" waccm_phys="1" waccmx="0" model_top="none"> 8 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" waccm_phys="1" waccmx="1" model_top="none"> 5 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" model_top="lt" > 2 </se_hypervis_subcycle>
<se_hypervis_subcycle hgrid="ne30np4" model_top="mt" > 3 </se_hypervis_subcycle>
<se_hypervis_subcycle se_refined_mesh="1" > 3 </se_hypervis_subcycle>
Expand All @@ -3187,6 +3188,7 @@
<se_hypervis_subcycle_sponge hgrid="ne16np4" waccm_phys="1" waccmx="0"> 2 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" waccm_phys="1" waccmx="0"> 4 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge waccmx="1" > 20 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne30np4" waccmx="1" model_top="none"> 60 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne120np4" > 4 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge se_refined_mesh="1" > 2 </se_hypervis_subcycle_sponge>
<se_hypervis_subcycle_sponge hgrid="ne0np4CONUS.ne30x8" waccm_phys="1" > 4 </se_hypervis_subcycle_sponge>
Expand Down Expand Up @@ -3231,10 +3233,12 @@
<se_sponge_del4_nu_div_fac hgrid="ne16np4" waccm_phys="1" waccmx="0"> 7.5 </se_sponge_del4_nu_div_fac>
<se_sponge_del4_nu_div_fac model_top="ht" > 7.5 </se_sponge_del4_nu_div_fac>
<se_sponge_del4_lev > -1 </se_sponge_del4_lev>
<se_sponge_del4_lev waccm_phys="1"> 30 </se_sponge_del4_lev>
<se_sponge_del4_lev model_top="ht"> 30 </se_sponge_del4_lev>
<se_sponge_del4_lev model_top="xt"> 30 </se_sponge_del4_lev>

<se_qsplit > 1 </se_qsplit>
<se_qsplit hgrid="ne30np4" waccm_phys="1" waccmx="1" model_top="none"> 2 </se_qsplit>

<se_refined_mesh > .false. </se_refined_mesh>
<se_refined_mesh hgrid="ne0np4CONUS.ne30x8" > .true. </se_refined_mesh>
Expand All @@ -3246,10 +3250,11 @@
<se_nsplit hgrid="ne16np4" > 1 </se_nsplit>

<se_nsplit hgrid="ne5np4" waccm_phys="1" > 3 </se_nsplit>
<se_nsplit hgrid="ne16np4" waccmx="1" model_top="none" > 5 </se_nsplit>
<se_nsplit hgrid="ne16np4" waccmx="1" model_top="none" > 3 </se_nsplit>
<se_nsplit hgrid="ne16np4" waccm_phys="1" model_top="none"> 2 </se_nsplit>
<se_nsplit hgrid="ne16np4" model_top="ht" > 2 </se_nsplit>
<se_nsplit hgrid="ne16np4" model_top="ht" > 3 </se_nsplit>
<se_nsplit hgrid="ne16np4" model_top="xt" > 3 </se_nsplit>
<se_nsplit hgrid="ne30np4" waccm_phys="1" waccmx="1" model_top="none"> 4 </se_nsplit>
<se_nsplit hgrid="ne30np4" > 2 </se_nsplit>
<se_nsplit hgrid="ne30np4" waccm_phys="1" model_top="none"> 4 </se_nsplit>
<se_nsplit hgrid="ne30np4" model_top="ht" > 4 </se_nsplit>
Expand All @@ -3262,6 +3267,7 @@
<se_rsplit waccm_phys="1" waccmx="0" > 2 </se_rsplit>
<se_rsplit model_top="ht" > 2 </se_rsplit>
<se_rsplit waccmx="1" > 4 </se_rsplit>
<se_rsplit hgrid="ne16np4" waccmx="1" model_top="none"> 2 </se_rsplit>
<se_rsplit hgrid="ne0np4CONUS.ne30x8" waccm_phys="1"> 3 </se_rsplit>

<se_fvm_supercycling>-1</se_fvm_supercycling>
Expand Down
2 changes: 1 addition & 1 deletion bld/namelist_files/use_cases/sd_waccm_ma_cam6.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<met_fix_mass>.true.</met_fix_mass>
<met_data_file hgrid="1.9x2.5">1980/MERRA2_1.9x2.5_19800101.nc</met_data_file>
<met_data_path hgrid="1.9x2.5">atm/cam/met/MERRA2/1.9x2.5</met_data_path>
<met_filenames_list hgrid="1.9x2.5">atm/cam/met/MERRA2/1.9x2.5/filenames_list_c190911.txt</met_filenames_list>
<met_filenames_list hgrid="1.9x2.5">atm/cam/met/MERRA2/1.9x2.5/filenames_list_1980-2023_c240324</met_filenames_list>
<met_data_file dyn="fv" hgrid="0.9x1.25" chem="waccm_ma_mam4" >1980/MERRA2_0.9x1.25_19800101.nc</met_data_file>
<met_data_file dyn="fv" hgrid="0.9x1.25" chem="waccm_ma_mam5" >1980/MERRA2_0.9x1.25_19800101.nc</met_data_file>
<met_data_file dyn="fv" hgrid="0.9x1.25" chem="waccm_mad_mam4">2005/MERRA2_0.9x1.25_20050101.nc</met_data_file>
Expand Down
3 changes: 0 additions & 3 deletions bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@
<ncdata dyn="se" hgrid="ne30np4" nlev="189">atm/waccm/ic/FHIST_WXma_ne30pg3_spinup03.cam.i.1980-01-01-00000_c250201.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="189">atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc</ncdata>

<!-- topography -->
<bnd_topo dyn="se" hgrid="ne16np4" npg="3">atm/cam/topo/se/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc</bnd_topo>

<!-- LBC, UBC Files -->
<flbc_type>SERIAL</flbc_type>
<flbc_file>atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc</flbc_file>
Expand Down
3 changes: 0 additions & 3 deletions bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
<ncdata dyn="se" hgrid="ne30np4" nlev="189">atm/waccm/ic/FHIST_WXma_ne30pg3_spinup03.cam.i.1980-01-01-00000_c250201.nc</ncdata>
<ncdata dyn="se" hgrid="ne16np4" nlev="189">atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc</ncdata>

<!-- topography -->
<bnd_topo dyn="se" hgrid="ne16np4" npg="3">atm/cam/topo/se/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc</bnd_topo>

<!-- LBC, UBC Files -->
<flbc_type>SERIAL</flbc_type>
<flbc_file>atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc</flbc_file>
Expand Down
2 changes: 0 additions & 2 deletions cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,6 @@

<!-- Match against "%WC" to set defaults for all WACCM cases. -->
<!-- Later settings of "-chem" take precedence over earlier ones. -->
<value compset="_(CAM50|CAM60)%(WC|CT|CV|CF|CARMA)">-age_of_air_trcs</value>
<value compset="_CAM70%(WA|WX)">-age_of_air_trcs</value>
<value compset="_CAM40%WCCM">-chem waccm_ma</value>
<value compset="_(CAM50|CAM60)%WCCM">-chem waccm_ma_mam5</value>
<value compset="_(CAM50|CAM60)%WCMD">-chem waccm_mad_mam5</value>
Expand Down
2 changes: 1 addition & 1 deletion cime_config/testdefs/testlist_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1290,7 +1290,7 @@
<option name="wallclock">00:30:00</option>
</options>
</test>
<test compset="FHISTC_WXma" grid="ne30pg3_ne30pg3_mg17" name="ERS_Ln9" testmods="cam/outfrq9s">
<test compset="FHISTC_WXma" grid="ne30pg3_ne30pg3_mg17" name="ERS_Lh3" testmods="cam/outfrq3h">
<machines>
<machine name="derecho" compiler="intel" category="aux_cam"/>
<machine name="derecho" compiler="intel" category="waccmx"/>
Expand Down
30 changes: 29 additions & 1 deletion src/chemistry/mozart/mo_usrrxt.F90
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ module mo_usrrxt
integer :: usr_DMS_OH_ndx
integer :: usr_HO2_aer_ndx
integer :: usr_GLYOXAL_aer_ndx
integer :: usr_N_O2_ndx
integer :: usr_N2D_O2_ndx
integer :: usr_N2D_e_ndx

integer :: tag_NO2_NO3_ndx
integer :: tag_NO2_OH_ndx
Expand Down Expand Up @@ -273,6 +276,9 @@ subroutine usrrxt_inti
usr_MPAN_M_ndx = get_rxt_ndx( 'usr_MPAN_M' )
usr_XOOH_OH_ndx = get_rxt_ndx( 'usr_XOOH_OH' )
usr_SO2_OH_ndx = get_rxt_ndx( 'usr_SO2_OH' )
usr_N_O2_ndx = get_rxt_ndx( 'usr_N_O2' )
usr_N2D_O2_ndx = get_rxt_ndx( 'usr_N2D_O2' )
usr_N2D_e_ndx = get_rxt_ndx( 'usr_N2D_e' )
usr_DMS_OH_ndx = get_rxt_ndx( 'usr_DMS_OH' )
usr_HO2_aer_ndx = get_rxt_ndx( 'usr_HO2_aer' )
usr_GLYOXAL_aer_ndx = get_rxt_ndx( 'usr_GLYOXAL_aer' )
Expand Down Expand Up @@ -569,7 +575,7 @@ subroutine usrrxt_inti
write(iulog,'(10i5)') usr_O_O2_ndx,usr_HO2_HO2_ndx,tag_NO2_NO3_ndx,usr_N2O5_M_ndx,tag_NO2_OH_ndx,usr_HNO3_OH_ndx &
,tag_NO2_HO2_ndx,usr_HO2NO2_M_ndx,usr_N2O5_aer_ndx,usr_NO3_aer_ndx,usr_NO2_aer_ndx &
,usr_CO_OH_b_ndx,tag_C2H4_OH_ndx,tag_C3H6_OH_ndx,tag_CH3CO3_NO2_ndx,usr_PAN_M_ndx,usr_CH3COCH3_OH_ndx &
,usr_MCO3_NO2_ndx,usr_MPAN_M_ndx,usr_XOOH_OH_ndx,usr_SO2_OH_ndx,usr_DMS_OH_ndx,usr_HO2_aer_ndx &
,usr_MCO3_NO2_ndx,usr_MPAN_M_ndx,usr_XOOH_OH_ndx,usr_SO2_OH_ndx,usr_N2D_O2_ndx,usr_N2D_e_ndx,usr_N_O2_ndx,usr_DMS_OH_ndx,usr_HO2_aer_ndx &
,usr_GLYOXAL_aer_ndx,usr_ISOPNITA_aer_ndx,usr_ISOPNITB_aer_ndx,usr_ONITR_aer_ndx,usr_HONITR_aer_ndx &
,usr_TERPNIT_aer_ndx,usr_NTERPOOH_aer_ndx,usr_NC4CHO_aer_ndx,usr_NC4CH2OH_aer_ndx,usr_ISOPZD1O2_ndx &
,usr_ISOPZD4O2_ndx,usr_ISOPFDN_aer_ndx,usr_ISOPFNP_aer_ndx,usr_ISOPN2B_aer_ndx,usr_ISOPN1D_aer_ndx &
Expand Down Expand Up @@ -1092,6 +1098,28 @@ subroutine usrrxt( state, rxt, temp, tempi, tempe, invariants, h2ovmr, &
rxt(:,k,usr_CH3COCH3_OH_ndx) = 3.82e-11_r8 * exp_fac(:) + 1.33e-13_r8
end if

!-----------------------------------------------------------------
! ... N + O2 -> NO + O Abel Fernandez, A. Goumri, and Arthur Fontijn; 1998
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there DOI available for the three references listed in this new code?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hanli-liu, @npedatella
Do you have DOI references for these reaction rate calculations?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DOIs are:

doi:10.1021/jp972365k (Fernandez et al. 1998)
doi:10.1029/2002GL016720 (Duff et al., 2003)
doi:10.1029/GM087p0001 (Roble 1995)

Also note that the Fernandez paper does not give the rate coefficients. These were calculated from the data in the paper by John Orlando, Doug Kinnison, and Jun Zhang. I am note sure if this should be mentioned or not.

!-----------------------------------------------------------------
if( usr_N_O2_ndx > 0 ) then
call comp_exp( exp_fac, -2557._r8*tinv, ncol )
rxt(:,k,usr_N_O2_ndx) = 2.0e-18_r8 * temp(:ncol,k)**2.15_r8 * exp_fac(:)
end if

!-----------------------------------------------------------------
! ... N2D + O2 -> NO + O Duff, J.W., H. Dothe, and R. D. Sharma, 2003
!-----------------------------------------------------------------
if( usr_N2D_O2_ndx > 0 ) then
rxt(:,k,usr_N2D_O2_ndx) = 6.2e-12_r8 * temp(:ncol,k)/300.0_r8
end if

!-----------------------------------------------------------------
! ... N2D + e -> N + e Roble, 1995
!-----------------------------------------------------------------
if( usr_N2D_e_ndx > 0 ) then
rxt(:,k,usr_N2D_e_ndx) = 3.6e-10_r8 * sqrt(tempe(:ncol,k)/300.0_r8)
end if

!-----------------------------------------------------------------
! ... DMS + OH --> .5 * SO2
! JPL15-10 (use [O2] = 0.21*[M])
Expand Down
Loading