Skip to content

Commit

Permalink
Merge pull request #1104 from fvitt/dust_emissions
Browse files Browse the repository at this point in the history
cam6_4_028: Dust emissions
  • Loading branch information
fvitt authored Sep 4, 2024
2 parents 29f2795 + e7627ac commit d125217
Show file tree
Hide file tree
Showing 11 changed files with 424 additions and 85 deletions.
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>
</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

0 comments on commit d125217

Please sign in to comment.