Skip to content

Commit ebe5d0c

Browse files
committed
Merge branch 'mingxuanwupnnl/atm/MAM5_tuning_forv3HR' (PR #7795)
Add tunable aerosol diameter thresholds for renaming to strat coarse mode in MAM5 Add tunable aerosol diameter thresholds for renaming to strat coarse mode in MAM5 When using CMIP7 volcanic SO2 emission, the model will produce larger stratospheric AOD and sulfate burden due to increased emission amount as well as changing injection height. The stratospheric sulfate burden during Pinatubo eruption when using CMIP7 volcanic SO2 emission is larger than HIRS observations. For v3.HR simulations, we identified two tunable aerosol mode diameter thresholds for renaming accumulation mode (mode 1) sulfate to stratospheric coarse mode (mode 5). By changing them from 0.4 um to 1 um, changing the dgnumhi in mode 1 physprop file, and changing dgnumlo in mode 5 physprop file, the stratospheric AOD and sulfate burden during Pinatubo are reduced, the RESTOM and SW flux at TOA are also reduced to the level when using default CMIP6 volcanic emission. In this PR, we only introduce two namelist variables for the two tunable thresholds and keep values the same as v3.LR simulations. [BFB] [NML] Two new namelist variables introduced affecting all tests using EAMv3 * origin/mingxuanwupnnl/atm/MAM5_tuning_forv3HR: Fix add_defaults for the new parameters only when defaults are available revise and add description for the two namelist variable according to review comments revise the description for the two threshold diameter Add missing args for phys_getopts add tunable aerosol mode diameter threholds for renaming to strat coarse mode in MAM5
2 parents 582e4be + 20a616e commit ebe5d0c

File tree

6 files changed

+54
-6
lines changed

6 files changed

+54
-6
lines changed

components/eam/bld/build-namelist

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3736,6 +3736,11 @@ add_default($nl, 'is_output_interactive_volc');
37363736
add_default($nl, 'mam_amicphys_optaa'); #for enabling amicphys code in eam
37373737
add_default($nl, 'n_so4_monolayers_pcage'); #number of so4(+nh4) monolayers needed to "age" a carbon particle
37383738

3739+
#cutoff diameter for larger accum mode particles renamed to the strat coarse mode
3740+
add_default($nl, 'dp_cut_accum_rename') if (get_default_value('dp_cut_accum_rename'));
3741+
#threshold diameter for all accum mode particles transferred to the strat coarse mode
3742+
add_default($nl, 'dp_xferall_thresh_accum_rename') if (get_default_value('dp_xferall_thresh_accum_rename'));
3743+
37393744
# Microphysics scheme
37403745
add_default($nl, 'use_subcol_microp');
37413746
add_default($nl, 'microp_scheme');

components/eam/bld/namelist_files/namelist_defaults_eam.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1917,6 +1917,8 @@ with se_tstep, dt_remap_factor, dt_tracer_factor set to -1
19171917
<p3_wbf_coeff phys="default" clubb_sgs="1" microphys="p3"> 1.0 </p3_wbf_coeff>
19181918
<p3_nc_autocon_expon phys="default" clubb_sgs="1" microphys="p3"> -1.10D0 </p3_nc_autocon_expon>
19191919
<n_so4_monolayers_pcage phys="default" clubb_sgs="1" microphys="p3"> 3.0D0 </n_so4_monolayers_pcage>
1920+
<dp_cut_accum_rename phys="default"> 4.0D-7 </dp_cut_accum_rename>
1921+
<dp_xferall_thresh_accum_rename phys="default"> 4.0D-7 </dp_xferall_thresh_accum_rename>
19201922
<clubb_C1 phys="default"> 2.4 </clubb_C1>
19211923
<clubb_C11 phys="default"> 0.70 </clubb_C11>
19221924
<clubb_C11b phys="default"> 0.20 </clubb_C11b>

components/eam/bld/namelist_files/namelist_definition.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4201,6 +4201,18 @@ number of so4(+nh4) monolayers needed to "age" a carbon particle
42014201
Default: Set by namelist
42024202
</entry>
42034203

4204+
<entry id="dp_cut_accum_rename" type="real" category="scavenging"
4205+
group="phys_ctl_nl" valid_values="" >
4206+
cutoff diameter for larger accum mode particles renamed to the strat coarse mode
4207+
Default: Set by namelist
4208+
</entry>
4209+
4210+
<entry id="dp_xferall_thresh_accum_rename" type="real" category="scavenging"
4211+
group="phys_ctl_nl" valid_values="" >
4212+
threshold diameter for all accum mode particles transferred to the strat coarse mode
4213+
Default: Set by namelist
4214+
</entry>
4215+
42044216

42054217
<!-- Diagnostics -->
42064218

components/eam/src/chemistry/modal_aero/modal_aero_amicphys.F90

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ module modal_aero_amicphys
5252
! aging criterion is approximate so do not try to distinguish
5353
! sulfuric acid, bisulfate, ammonium sulfate
5454

55+
real(r8), public, protected :: dp_cut_accum_rename = huge(1.0_r8)
56+
! cutoff diameter for larger accum mode particles renamed to the strat coarse mode
57+
58+
real(r8), public, protected :: dp_xferall_thresh_accum_rename = huge(1.0_r8)
59+
! threshold diameter for all accum mode particles transferred to the strat coarse mode
60+
61+
real(r8), public, protected :: micro_mg_accre_enhan_fac = huge(1.0_r8)
62+
5563
#if ( defined( CAMBOX_ACTIVATE_THIS ) )
5664
integer, public :: cldy_rh_sameas_clear = 0
5765
! this is only used for some specific box model tests
@@ -4550,11 +4558,11 @@ subroutine mam_rename_1subarea_strat( &
45504558
shrinkaa(n) = .false.
45514559
shrinkbb = .false. ! set initial value shrink switch: if calculate shrink fraction
45524560
if ( mtoo == ncrsf ) then ! stratosphere renaming
4553-
dp_cut(mfrm) = 4.0e-7_r8
4561+
dp_cut(mfrm) = dp_cut_accum_rename
45544562
lndp_cut(mfrm) = log( dp_cut(mfrm) )
45554563
dp_belowcut(mfrm) = 0.99*dp_cut(mfrm)
45564564
dp_xfernone_thresh(mfrm) = 1.0e-7_r8
4557-
dp_xferall_thresh(mfrm) = 4.0e-7_r8
4565+
dp_xferall_thresh(mfrm) = dp_xferall_thresh_accum_rename
45584566
end if
45594567
if (1>2) then ! turn off the shrink path for now
45604568
if ((mfrm == ncrsf .and. ncrsf > 0)) then
@@ -5994,7 +6002,8 @@ end subroutine gas_aer_uptkrates_1box1gas
59946002

59956003
!--------------------------------------------------------------------------------
59966004
!--------------------------------------------------------------------------------
5997-
subroutine modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pcage_in)
6005+
subroutine modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pcage_in, &
6006+
dp_cut_accum_rename_in, dp_xferall_thresh_accum_rename_in)
59986007

59996008
!-----------------------------------------------------------------------
60006009
!
@@ -6034,6 +6043,8 @@ subroutine modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pca
60346043
integer, intent(in) :: imozart
60356044
integer, intent(in) :: species_class(:)
60366045
real(r8), intent(in) :: n_so4_monolayers_pcage_in
6046+
real(r8), intent(in) :: dp_cut_accum_rename_in
6047+
real(r8), intent(in) :: dp_xferall_thresh_accum_rename_in
60376048

60386049
!-----------------------------------------------------------------------
60396050
! local
@@ -6059,6 +6070,8 @@ subroutine modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pca
60596070
n_so4_monolayers_pcage = n_so4_monolayers_pcage_in
60606071
dr_so4_monolayers_pcage = n_so4_monolayers_pcage * 4.76e-10
60616072

6073+
dp_cut_accum_rename = dp_cut_accum_rename_in
6074+
dp_xferall_thresh_accum_rename = dp_xferall_thresh_accum_rename_in
60626075

60636076
#if ( defined( CAMBOX_ACTIVATE_THIS ) )
60646077
ldiag82 = .true. ; lun82 = 82

components/eam/src/chemistry/modal_aero/modal_aero_initialize_data.F90

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,8 @@ subroutine modal_aero_initialize(pbuf2d, imozart, species_class)
425425
integer :: numaerosols ! number of bulk aerosols in climate list
426426
character(len=20) :: bulkname
427427
real(r8) :: pi,n_so4_monolayers_pcage_in
428+
real(r8) :: dp_cut_accum_rename_in
429+
real(r8) :: dp_xferall_thresh_accum_rename_in
428430
complex(r8), pointer :: refindex_aer_sw(:), &
429431
refindex_aer_lw(:)
430432
real(r8), pointer :: qqcw(:,:)
@@ -441,7 +443,9 @@ subroutine modal_aero_initialize(pbuf2d, imozart, species_class)
441443
call phys_getopts(convproc_do_gas_out = convproc_do_gas, &
442444
convproc_do_aer_out = convproc_do_aer, &
443445
mam_amicphys_optaa_out = mam_amicphys_optaa, &
444-
n_so4_monolayers_pcage_out = n_so4_monolayers_pcage_in)
446+
n_so4_monolayers_pcage_out = n_so4_monolayers_pcage_in, &
447+
dp_cut_accum_rename_out = dp_cut_accum_rename_in, &
448+
dp_xferall_thresh_accum_rename_out = dp_xferall_thresh_accum_rename_in)
445449

446450

447451
! Mode specific properties.
@@ -628,7 +632,9 @@ subroutine modal_aero_initialize(pbuf2d, imozart, species_class)
628632
if ( mam_amicphys_optaa > 0 ) then
629633
call modal_aero_calcsize_init( pbuf2d, species_class )
630634
call modal_aero_newnuc_init( mam_amicphys_optaa )
631-
call modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pcage_in )
635+
call modal_aero_amicphys_init( imozart, species_class,n_so4_monolayers_pcage_in, &
636+
dp_cut_accum_rename_in, &
637+
dp_xferall_thresh_accum_rename_in)
632638
else
633639
call modal_aero_rename_init
634640
! calcsize call must follow rename call

components/eam/src/physics/cam/phys_control.F90

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ module phys_control
125125
! newnuc, and coag routines)
126126
! > 0 -- use new microphysics code (single call to amicphys routine)
127127
real(r8) :: n_so4_monolayers_pcage = huge(1.0_r8) ! number of so4(+nh4) monolayers needed to "age" a carbon particle
128+
real(r8) :: dp_cut_accum_rename = huge(1.0_r8) ! cutoff diameter for larger accum mode particles renamed to the strat coarse mode
129+
real(r8) :: dp_xferall_thresh_accum_rename = huge(1.0_r8) ! threshold diameter for all accum mode particles transferred to the strat coarse mode
128130
real(r8) :: micro_mg_accre_enhan_fac = huge(1.0_r8) !!Accretion enhancement factor
129131
logical :: liqcf_fix = .false. ! liq cld fraction fix calc.
130132
logical :: regen_fix = .false. ! aerosol regeneration bug fix for ndrop.F90
@@ -261,7 +263,8 @@ subroutine phys_ctl_readnl(nlfile)
261263
cld_macmic_num_steps, micro_do_icesupersat, &
262264
fix_g1_err_ndrop, ssalt_tuning, resus_fix, convproc_do_aer, &
263265
convproc_do_gas, convproc_method_activate, liqcf_fix, regen_fix, demott_ice_nuc, pergro_mods, pergro_test_active, &
264-
mam_amicphys_optaa, n_so4_monolayers_pcage,micro_mg_accre_enhan_fac, &
266+
mam_amicphys_optaa, n_so4_monolayers_pcage, dp_cut_accum_rename, &
267+
dp_xferall_thresh_accum_rename, micro_mg_accre_enhan_fac, &
265268
cflx_cpl_opt, &
266269
l_tracer_aero, l_vdiff, l_rayleigh, l_gw_drag, l_ac_energy_chk, &
267270
l_bc_energy_fix, l_dry_adj, l_st_mac, l_st_mic, l_rad, prc_coef1,prc_exp,prc_exp1,cld_sed,mg_prc_coeff_fix, &
@@ -389,6 +392,8 @@ subroutine phys_ctl_readnl(nlfile)
389392
call mpibcast(convproc_method_activate, 1 , mpiint, 0, mpicom)
390393
call mpibcast(mam_amicphys_optaa, 1 , mpiint, 0, mpicom)
391394
call mpibcast(n_so4_monolayers_pcage, 1 , mpir8, 0, mpicom)
395+
call mpibcast(dp_cut_accum_rename, 1 , mpir8, 0, mpicom)
396+
call mpibcast(dp_xferall_thresh_accum_rename, 1 , mpir8, 0, mpicom)
392397
call mpibcast(micro_mg_accre_enhan_fac, 1 , mpir8, 0, mpicom)
393398
call mpibcast(liqcf_fix, 1 , mpilog, 0, mpicom)
394399
call mpibcast(regen_fix, 1 , mpilog, 0, mpicom)
@@ -620,6 +625,7 @@ subroutine phys_getopts(deep_scheme_out, shallow_scheme_out, eddy_scheme_out, &
620625
cld_macmic_num_steps_out, micro_do_icesupersat_out, &
621626
fix_g1_err_ndrop_out, ssalt_tuning_out,resus_fix_out,convproc_do_aer_out, &
622627
convproc_do_gas_out, convproc_method_activate_out, mam_amicphys_optaa_out, n_so4_monolayers_pcage_out, &
628+
dp_cut_accum_rename_out, dp_xferall_thresh_accum_rename_out, &
623629
micro_mg_accre_enhan_fac_out, liqcf_fix_out, regen_fix_out,demott_ice_nuc_out, pergro_mods_out, pergro_test_active_out &
624630
,cflx_cpl_opt_out &
625631
,l_tracer_aero_out, l_vdiff_out, l_rayleigh_out, l_gw_drag_out, l_ac_energy_chk_out &
@@ -712,6 +718,8 @@ subroutine phys_getopts(deep_scheme_out, shallow_scheme_out, eddy_scheme_out, &
712718
integer, intent(out), optional :: convproc_method_activate_out
713719
integer, intent(out), optional :: mam_amicphys_optaa_out
714720
real(r8), intent(out), optional :: n_so4_monolayers_pcage_out
721+
real(r8), intent(out), optional :: dp_cut_accum_rename_out
722+
real(r8), intent(out), optional :: dp_xferall_thresh_accum_rename_out
715723
real(r8), intent(out), optional :: micro_mg_accre_enhan_fac_out
716724
logical, intent(out), optional :: liqcf_fix_out
717725
logical, intent(out), optional :: regen_fix_out
@@ -818,6 +826,8 @@ subroutine phys_getopts(deep_scheme_out, shallow_scheme_out, eddy_scheme_out, &
818826
if ( present(convproc_method_activate_out ) ) convproc_method_activate_out = convproc_method_activate
819827
if ( present(mam_amicphys_optaa_out ) ) mam_amicphys_optaa_out = mam_amicphys_optaa
820828
if ( present(n_so4_monolayers_pcage_out ) ) n_so4_monolayers_pcage_out = n_so4_monolayers_pcage
829+
if ( present(dp_cut_accum_rename_out ) ) dp_cut_accum_rename_out = dp_cut_accum_rename
830+
if ( present(dp_xferall_thresh_accum_rename_out ) ) dp_xferall_thresh_accum_rename_out = dp_xferall_thresh_accum_rename
821831
if ( present(micro_mg_accre_enhan_fac_out)) micro_mg_accre_enhan_fac_out = micro_mg_accre_enhan_fac
822832
if ( present(liqcf_fix_out ) ) liqcf_fix_out = liqcf_fix
823833
if ( present(regen_fix_out ) ) regen_fix_out = regen_fix

0 commit comments

Comments
 (0)