Skip to content
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

cam6_4_028: Dust emissions #1104

Merged
merged 23 commits into from
Sep 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
610e7a9
implement soil erod switch
fvitt Jan 27, 2023
5311341
implement soil erod switch for bulk model
fvitt Jan 31, 2023
0322253
Merge remote-tracking branch 'origin/soil_erod_switch' into dust_emis…
fvitt Jul 24, 2024
92b6bac
use Erik's CTSM branch
fvitt Jul 24, 2024
bfb1886
use shr_dust_emis_mod inquiry functions
fvitt Jul 25, 2024
9cb0551
add checking for consistent settings; old atm/zender method b4b
fvitt Jul 25, 2024
f7b9e5d
define and set default namelist variables
fvitt Jul 25, 2024
b01294f
fix issue with aqua-planet
fvitt Jul 26, 2024
37fae81
use new ctsm tag
fvitt Aug 5, 2024
e393c66
use Leung_2023 for cam7 phys
fvitt Aug 12, 2024
712dead
Use Erik's CTSM hash; fix issues in build-namelist
fvitt Aug 22, 2024
ba285ec
fix issue in build-namelist
fvitt Aug 23, 2024
e6d302c
fix bug in emis scaling when Leung is used
fvitt Aug 23, 2024
eb6518a
Default Zender for all configs; use tag ctsm5.2.027
fvitt Aug 29, 2024
62b248c
Merge remote-tracking branch 'ESCOMP/cam_development' into dust_emiss…
fvitt Aug 29, 2024
95c159b
regression test Leung dust emis scheme
fvitt Aug 29, 2024
caa1bd3
correct typo in testlist_cam
fvitt Aug 29, 2024
01c9a7a
Merge remote-tracking branch 'ESCOMP/cam_development' into dust_emiss…
fvitt Sep 3, 2024
28e02f1
Increase time for HEMCO test
fvitt Sep 3, 2024
1ea1baa
Remove soil_erod setting when Leung is used in buld dust; ChangeLog d…
fvitt Sep 3, 2024
a950fae
change megan setting appease the atm lnd drv_flds_in compare
fvitt Sep 3, 2024
c424825
Override LND_SETS_DUST_EMIS_DRV_FLDS only for cam7/clm6
fvitt Sep 4, 2024
e7627ac
update ChangeLog
fvitt Sep 4, 2024
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
67 changes: 42 additions & 25 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,14 @@ if ($cfg->get('debug')) {
my $prescribe_aerosols = $TRUE;
if ($simple_phys) {$prescribe_aerosols = $FALSE;}

# CTSM Dust emissions scheme
my $soil_erod_atm = $FALSE;
add_default($nl, 'dust_emis_method');
if ( $nl->get_value('dust_emis_method') =~ /Zender/ ) {
add_default($nl, 'zender_soil_erod_source');
if ($nl->get_value('zender_soil_erod_source') =~ /atm/) {$soil_erod_atm = $TRUE;}
}

# Chemistry deposition lists
if ( ($chem ne 'none') or ( $prog_species ) ){
my $chem_proc_src = $cfg->get('chem_proc_src');
Expand Down Expand Up @@ -1801,7 +1809,7 @@ if ( $prog_species ) {
add_default($nl, 'ghg_chem', 'val'=>".true.");
add_default($nl, 'bndtvg');
}
if ( $prog_species =~ /DST/ ) {
if ( $prog_species =~ /DST/ and $soil_erod_atm =~ /$TRUE/) {
add_default($nl, 'soil_erod_file' );
}

Expand Down Expand Up @@ -2091,9 +2099,11 @@ if ($chem =~ /geoschem/) {
add_default($nl, 'flbc_cycle_yr', 'val'=>'2000');
}

my @files;
# Datasets
@files = ( 'soil_erod_file', 'flbc_file' );
my @files = ( 'flbc_file' );
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}
foreach my $file (@files) {
add_default($nl, $file);
}
Expand Down Expand Up @@ -2132,12 +2142,15 @@ if ($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) {
my @files;
# Datasets
if ($chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) {
@files = ( 'soil_erod_file', 'flbc_file',
@files = ( 'flbc_file',
'xs_coef_file','xs_short_file','xs_long_file', 'rsf_file' );
} else {
@files = ( 'soil_erod_file', 'flbc_file',
@files = ( 'flbc_file',
'xs_coef_file','xs_short_file','xs_long_file', 'rsf_file', 'exo_coldens_file', 'sulf_file' );
}
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}
foreach my $file (@files) {
add_default($nl, $file);
}
Expand Down Expand Up @@ -2235,8 +2248,10 @@ if ($chem eq 'trop_mam3') {
add_default($nl, 'flbc_list', 'val'=>"' '");

# Datasets
my @files = ('soil_erod_file',
'xs_long_file', 'rsf_file', 'exo_coldens_file' );
my @files = ( 'xs_long_file', 'rsf_file', 'exo_coldens_file' );
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}
foreach my $file (@files) {
add_default($nl, $file);
}
Expand Down Expand Up @@ -2740,8 +2755,10 @@ if (($chem eq 'trop_mam4') or ($chem eq 'waccm_sc_mam4') or ($chem eq 'ghg_mam4'
add_default($nl, 'flbc_list', 'val'=>"' '");

# Datasets
my @files = ('soil_erod_file',
'xs_long_file', 'rsf_file', 'exo_coldens_file' );
my @files = ('xs_long_file', 'rsf_file', 'exo_coldens_file' );
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}
foreach my $file (@files) {
add_default($nl, $file);
}
Expand Down Expand Up @@ -2829,8 +2846,10 @@ if ($chem eq 'trop_mam7') {
add_default($nl, 'flbc_list', 'val'=>"' '");

# Datasets
my @files = ('soil_erod_file',
'xs_long_file', 'rsf_file', 'exo_coldens_file' );
my @files = ('xs_long_file', 'rsf_file', 'exo_coldens_file' );
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}
foreach my $file (@files) {
add_default($nl, $file);
}
Expand Down Expand Up @@ -2889,8 +2908,10 @@ if ($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/) {
'photon_file', 'electron_file', 'igrf_geomag_coefs_file',
'euvac_file', 'solar_parms_data_file',
'depvel_lnd_file',
'xs_coef_file', 'xs_short_file','xs_long_file', 'rsf_file',
'soil_erod_file' );
'xs_coef_file', 'xs_short_file','xs_long_file', 'rsf_file' );
if ($soil_erod_atm =~ /$TRUE/) {
@files = ( @files, 'soil_erod_file' );
}

if (!$waccmx) { @files = (@files, 'tgcm_ubc_file', 'snoe_ubc_file' ); }

Expand Down Expand Up @@ -3728,19 +3749,15 @@ if ($cfg->get('microphys') eq 'rk') {
}

# Dust emissions tuning factor
# If dust is prognostic ==> supply the tuning factor
if ( length($nl->get_value('soil_erod_file'))>0 ) {
# check whether turbulent mountain stress parameterization is on
if ($nl->get_value('do_tms') =~ /$TRUE/io) {
add_default($nl, 'dust_emis_fact', 'tms'=>'1');
# check whether turbulent mountain stress parameterization is on
if ($nl->get_value('do_tms') =~ /$TRUE/io) {
add_default($nl, 'dust_emis_fact', 'tms'=>'1');
} else {
if ($chem =~ /trop_strat/ or $chem =~ /geoschem/ or $chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /trop_mozart/) {
add_default($nl, 'dust_emis_fact', 'ver'=>'chem');
}
else {
if ($chem =~ /trop_strat/ or $chem =~ /geoschem/ or $chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /trop_mozart/) {
add_default($nl, 'dust_emis_fact', 'ver'=>'chem');
}
else {
add_default($nl, 'dust_emis_fact');
}
add_default($nl, 'dust_emis_fact');
}
}
if (chem_has_species($cfg, 'NO')) {
Expand Down Expand Up @@ -4449,7 +4466,7 @@ my %nl_group = ();
foreach my $name (@nl_groups) { $nl_group{$name} = ''; }

# Dry deposition, MEGAN VOC emis and ozone namelists
@comp_groups = qw(drydep_inparm megan_emis_nl fire_emis_nl carma_inparm ndep_inparm ozone_coupling_nl lightning_coupling_nl);
@comp_groups = qw(drydep_inparm megan_emis_nl fire_emis_nl carma_inparm ndep_inparm ozone_coupling_nl lightning_coupling_nl dust_emis_inparm);

$outfile = "$opts{'dir'}/drv_flds_in";
$nl->write($outfile, 'groups'=>\@comp_groups);
Expand Down
4 changes: 4 additions & 0 deletions bld/namelist_files/namelist_defaults_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2543,6 +2543,10 @@
<dust_emis_fact hgrid="0.47x0.63" offline_dyn="1" phys="cam6" ver="chem">0.9D0</dust_emis_fact>
<dust_emis_fact hgrid="0.47x0.63" offline_dyn="1" phys="cam7" ver="chem">0.9D0</dust_emis_fact>

<!-- dust emissions method -->
<dust_emis_method>Zender_2003</dust_emis_method>
<zender_soil_erod_source>atm</zender_soil_erod_source>

<!-- seasalt emission tuning factor -->
<!-- Note that ver="strat" when modal_accum_coarse_exch=.true. -->
<seasalt_emis_scale >1.35D0</seasalt_emis_scale>
Expand Down
15 changes: 15 additions & 0 deletions bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7704,6 +7704,21 @@ List of fluxes needed by the CARMA model, from CLM to CAM.
Default: set by build-namelist.
</entry>

<entry id="dust_emis_method" type="char*80" category="dust_emissions"
group="dust_emis_inparm" valid_values="Zender_2003,Leung_2023" >
Which dust emission method is going to be used.
Either the Zender 2003 scheme or the Leung 2023 scheme.
Default: Zender_2003
</entry>

<entry id="zender_soil_erod_source" type="char*80" category="dust_emissions"
group="dust_emis_inparm" valid_values="none,lnd,atm" >
Option only applying for the Zender_2003 method for whether the soil erodibility
file is handled in the active LAND model or in the ATM model.
(only used when dust_emis_method is Zender_2003)
Default: atm
</entry>

<!-- Ozone namelist variables shared between CAM and driver -->

<entry id="atm_ozone_frequency" type="char*64" category="ozone_coupling"
Expand Down
6 changes: 6 additions & 0 deletions cime_config/config_compsets.xml
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,12 @@
</values>
</entry>

<entry id="LND_SETS_DUST_EMIS_DRV_FLDS">
<values match="first">
<value compset="_CAM7.*_CLM6">FALSE</value>
Copy link

Choose a reason for hiding this comment

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

@fvitt I was concerned about this at first in case it meant that the CAM Zender soil erodibility files were NOT being used. But, it looks like that is NOT the case. So this should be fine. I'm looking at it more closely. I'm glad you figured this workaround out.

Copy link

Choose a reason for hiding this comment

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

This is also probably fine since longer term we want to always make this TRUE and even remove it entirely. So that just brings us closer to the long term solution.

Copy link

Choose a reason for hiding this comment

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

The only bad thing here is that it means that the way you change dust emission settings will be different for the CAM7 with CAM6 than for anything else. But, it's unlikely that people will be messing with the dust settings for previous CAM physics.

</values>
</entry>

</entries>

</compsets>
6 changes: 3 additions & 3 deletions cime_config/testdefs/testlist_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1514,7 +1514,7 @@
<options>
<option name="wallclock">00:30:00</option>
</options>
</test>
</test>
<test compset="F2000dev" grid="ne30pg3_ne30pg3_mg17" name="ERS_Ln9_G4-a100-openacc" testmods="cam/outfrq9s_mg3_pcols760">
<machines>
<machine name="derecho" compiler="nvhpc" category="derecho_gpu"/>
Expand Down Expand Up @@ -2023,7 +2023,7 @@
<machine name="derecho" compiler="intel" category="camchem_hco"/>
</machines>
<options>
<option name="wallclock">00:20:00</option>
<option name="wallclock">00:40:00</option>
<option name="comment">FCSD CAM-chem f19 with HEMCO exact restart/PE tests</option>
</options>
</test>
Expand Down Expand Up @@ -2263,7 +2263,7 @@
<option name="wallclock">00:10:00</option>
</options>
</test>
<test compset="FCLTHIST" grid="ne30pg3_ne30pg3_mg17" name="SMS_D_Ln9_P1280x1" testmods="cam/outfrq9s">
<test compset="FCLTHIST" grid="ne30pg3_ne30pg3_mg17" name="SMS_D_Ln9_P1280x1" testmods="cam/outfrq9s_Leung_dust">
<machines>
<machine name="derecho" compiler="intel" category="aux_cam"/>
<machine name="derecho" compiler="intel" category="camchem"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
./xmlchange ROF_NCPL=\$ATM_NCPL
./xmlchange GLC_NCPL=\$ATM_NCPL
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dust_emis_method = 'Leung_2023'

fincl2 = 'dst_a1SF', 'dst_a2SF', 'dst_a3SF'

mfilt=1,1,1,1,1,1
ndens=1,1,1,1,1,1
nhtfrq=9,9,9,9,9,9
write_nstep0=.true.
inithist='ENDOFRUN'
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
!----------------------------------------------------------------------------------
! Users should add all user specific namelist changes below in the form of
! namelist_var = new_namelist_value
!
! Include namelist variables for drv_flds_in ONLY if -megan and/or -drydep options
! are set in the CLM_NAMELIST_OPTS env variable.
!
! EXCEPTIONS:
! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting
! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting
! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting
! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting
! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting
! Set irrigate by the CLM_BLDNML_OPTS -irrig setting
! Set dtime with L_NCPL option
! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options
! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases
! (includes $inst_string for multi-ensemble cases)
! Set glc_grid with CISM_GRID option
! Set glc_smb with GLC_SMB option
! Set maxpatch_glcmec with GLC_NEC option
! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable
!----------------------------------------------------------------------------------
hist_nhtfrq = 9
hist_mfilt = 1
hist_ndens = 1

Loading
Loading