diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 10dc362beb..0000000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# Contributor Code of Conduct
-_The Contributor Code of Conduct is for participants in our software projects and community._
-
-## Our Pledge
-We, as contributors, creators, stewards, and maintainers (participants), of the Community Atmosphere Model (CAM) pledge to make participation in our software, system or hardware project and community a safe, productive, welcoming and inclusive experience for everyone.
-All participants are required to abide by this Code of Conduct.
-This includes respectful treatment of everyone regardless of age, body size, disability, ethnicity, gender identity or expression, level of experience, nationality, political affiliation, veteran status, pregnancy, genetic information, physical appearance, race, religion, or sexual orientation, as well as any other characteristic protected under applicable US federal or state law.
-
-## Our Standards
-Examples of behaviors that contribute to a positive environment include:
-
-* All participants are treated with respect and consideration, valuing a diversity of views and opinions
-* Be considerate, respectful, and collaborative
-* Communicate openly with respect for others, critiquing ideas rather than individuals and gracefully accepting criticism
-* Acknowledging the contributions of others
-* Avoid personal attacks directed toward other participants
-* Be mindful of your surroundings and of your fellow participants
-* Alert UCAR staff and suppliers/vendors if you notice a dangerous situation or someone in distress
-* Respect the rules and policies of the project and venue
-
-Examples of unacceptable behavior include, but are not limited to:
-
-* Harassment, intimidation, or discrimination in any form
-* Physical, verbal, or written abuse by anyone to anyone, including repeated use of pronouns other than those requested
-* Unwelcome sexual attention or advances
-* Personal attacks directed at other guests, members, participants, etc.
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Alarming, intimidating, threatening, or hostile comments or conduct
-* Inappropriate use of nudity and/or sexual images
-* Threatening or stalking anyone, including a participant
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Scope
-This Code of Conduct applies to all spaces managed by the Project whether they be physical, online or face-to-face.
-This includes project code, code repository, associated web pages, documentation, mailing lists, project websites and wiki pages, issue tracker, meetings, telecons, events, project social media accounts, and any other forums created by the project team which the community uses for communication.
-In addition, violations of this Code of Conduct outside these spaces may affect a person's ability to participate within them.
-Representation of a project may be further defined and clarified by project maintainers.
-
-## Community Responsibilities
-Everyone in the community is empowered to respond to people who are showing unacceptable behavior.
-They can talk to them privately or publicly.
-Anyone requested to stop unacceptable behavior is expected to comply immediately.
-If the behavior continues concerns may be brought to the project administrators or to any other party listed in the [Reporting](#reporting) section below.
-
-## Project Administrator Responsibilities
-Project administrators are responsible for clarifying the standards of acceptable behavior and are encouraged to model appropriate behavior and provide support when people in the community point out inappropriate behavior.
-Project administrator(s) are normally the ones that would be tasked to carry out the actions in the [Consequences](#consequences) section below.
-
-Project administrators are also expected to keep this Code of Conduct updated with the main one housed at UCAR, as listed below in the [Attribution](#attribution) section.
-
-## Reporting
-Instances of unacceptable behavior can be brought to the attention of the project administrator(s) who may take any action as outlined in the [Consequences](#consequences) section below.
-However, making a report to a project administrator is not considered an 'official report' to UCAR.
-
-Instances of unacceptable behavior may also be reported directly to UCAR pursuant to [UCAR's Harassment Reporting and Complaint Procedure](https://www2.fin.ucar.edu/procedures/hr/harassment-reporting-and-complaint-procedure), or anonymously through [UCAR's EthicsPoint Hotline](https://www2.fin.ucar.edu/ethics/anonymous-reporting).
-
-Complaints received by UCAR will be handled pursuant to the procedures outlined in UCAR's Harassment Reporting and Complaint Procedure.
-Complaints to UCAR will be held as confidential as practicable under the circumstances, and retaliation against a person who initiates a complaint or an inquiry about inappropriate behavior will not be tolerated.
-
-Any Contributor can use these reporting methods even if they are not directly affiliated with UCAR.
-The Frequently Asked Questions (FAQ) page for reporting is [here](https://www2.fin.ucar.edu/procedures/hr/reporting-faqs).
-
-## Consequences
-Upon receipt of a complaint, the project administrator(s) may take any action deemed necessary and appropriate under the circumstances.
-Such action can include things such as: removing, editing, or rejecting comments, commits, code, wiki edits, email, issues, and other contributions that are not aligned to this Code of Conduct, or banning temporarily or permanently any contributor for other behaviors that are deemed inappropriate, threatening, offensive, or harmful.
-Project administrators also have the right to report violations to UCAR HR and/or UCAR's Office of Diversity, Equity and Inclusion (ODEI), as well as a participant's home institution and/or law enforcement.
-In the event an incident is reported to UCAR, UCAR will follow its Harassment Reporting and Complaint Procedure.
-
-## Process for Changes
-All UCAR managed projects are required to adopt this Contributor Code of Conduct.
-Adoption is assumed even if not expressly stated in the repository.
-Projects should fill in sections where prompted with project-specific information, including, project name and adoption date.
-
-Projects that adopt this Code of Conduct need to stay up to date with UCAR's Contributor Code of Conduct, linked with a DOI in the [Attribution](#attribution) section below.
-Projects can make limited substantive changes to the Code of Conduct, however, the changes must be limited in scope and may not contradict the UCAR Contributor Code of Conduct.
-
-## Attribution
-This Code of Conduct was originally adapted from the [Contributor Covenant](http://contributor-covenant.org/version/1/4), version 1.4.
-We then aligned it with the UCAR Participant Code of Conduct, which also borrows from the American Geophysical Union (AGU) Code of Conduct.
-The UCAR Participant Code of Conduct applies to both UCAR employees as well as participants in activities run by UCAR.
-The original version of this for all software projects that have strong management from UCAR or UCAR staff is available on the UCAR website at https://doi.org/10.5065/6w2c-a132.
-The date that it was adopted by this project was 2020-04-08 and replaces the previous version.
-When responding to complaints, UCAR HR and ODEI will do so based on the latest published version.
-Therefore, any project-specific changes should follow the [Process for Changes](#process-for-changes) section above.
diff --git a/bld/build-namelist b/bld/build-namelist
index 9cebff2ea8..c35f655a02 100755
--- a/bld/build-namelist
+++ b/bld/build-namelist
@@ -509,14 +509,6 @@ if ($phys_mode_flags > 1) {
my $simple_phys = 0;
if ($adia_mode or $ideal_mode) { $simple_phys = 1; }
-# If running either a simple physics or an aquaplanet configuration, the nitrogen
-# deposition data is not used. These files are set in buildnml and can't be overridden
-# via user_nl_cam. So provide an override here.
-if ($simple_phys or $aqua_mode) {
- $nl->set_variable_value('ndep_stream_nl', 'stream_ndep_data_filename', '" "');
- $nl->set_variable_value('ndep_stream_nl', 'stream_ndep_mesh_filename', '" "');
-}
-
# Single column mode
my $scam = $cfg->get('scam');
my $scam_iop = $cfg->get('scam_iop');
@@ -705,6 +697,19 @@ if ($sim_year =~ /(\d+)-(\d+)/) {
$sim_year_start = $1;
}
+# Setup default ndep streams only if not simple_phys or aqua_mode and
+# the chemistry cannot produce the nitrogen depostion fluxes
+if (!($simple_phys or $aqua_mode)) {
+ my $chem_nitrodep = chem_has_species($cfg, 'NO') and chem_has_species($cfg, 'NH3');
+ if ((!$chem_nitrodep) or ($chem =~ /geoschem/)) {
+ add_default($nl, 'stream_ndep_mesh_filename');
+ add_default($nl, 'stream_ndep_data_filename', 'sim_year'=>$sim_year);
+ add_default($nl, 'stream_ndep_year_first', 'sim_year'=>$sim_year);
+ add_default($nl, 'stream_ndep_year_last', 'sim_year'=>$sim_year);
+ add_default($nl, 'stream_ndep_year_align', 'sim_year'=>$sim_year);
+ }
+}
+
# Topography
add_default($nl, 'use_topo_file');
my $use_topo_file = $nl->get_value('use_topo_file');
@@ -755,11 +760,9 @@ if ($rad_pkg =~ /rrtmg/ or $chem =~ /waccm/) {
# use solar data file as the default for rrtmg and waccm_ma
add_default($nl, 'solar_irrad_data_file');
- # This option only used by camrt and rrtmg radiation schemes.
- # The solar spectral scaling is done internal to RRTMGP code.
- if ($rad_pkg ne 'rrtmgp') {
- add_default($nl, 'solar_htng_spctrl_scl', 'val'=>'.true.');
- }
+ # The solar spectral scaling is done based on the distribution from
+ # the solar_irrad_data_file.
+ add_default($nl, 'solar_htng_spctrl_scl', 'val'=>'.true.');
}
elsif (!$simple_phys) {
diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml
index 462570da4a..0c13c3fc11 100644
--- a/bld/namelist_files/namelist_defaults_cam.xml
+++ b/bld/namelist_files/namelist_defaults_cam.xml
@@ -264,8 +264,6 @@
atm/cam/inic/se/ape_cam5_ne120np4_L30_c170419.nc
atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L32_01-01-31_c221214.nc
-atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L58_01-01-31_c221214.nc
-atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L93_01_02_01_c240518.nc
atm/cam/inic/se/ape_cam6_ne5np4_L32_c170517.nc
atm/cam/inic/se/ape_cam6_ne16np4_L32_c170509.nc
atm/cam/inic/se/ape_cam6_ne30np4_L32_c170509.nc
@@ -692,13 +690,13 @@
atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
-atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
+atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_1.9x2.5_c20181011.nc
ac_CO2_filelist_175001-201512_fv_0.9x1.25_c20181011.txt
ac_CO2_filelist_175001-201512_fv_1.9x2.5_c20181011.txt
@@ -2060,6 +2058,25 @@
atm/cam/dst/dst_source2x2tuned-cam4-06132012.nc
atm/cam/dst/dst_source1x1tuned-cam4-06202012.nc
+
+share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc
+
+lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc
+lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc
+
+2000
+1850
+1850
+2010
+
+2000
+1850
+2015
+2010
+
+1
+1850
+
.false.
.true.
@@ -2197,7 +2214,7 @@
.true.
.false.
.false.
- .true.
+ .false.
.true.
.true.
.true.
diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml
index eed968e83c..1a89fb52bc 100644
--- a/bld/namelist_files/namelist_definition.xml
+++ b/bld/namelist_files/namelist_definition.xml
@@ -7626,40 +7626,29 @@ Bubble-mediated sea-air transfer. See ocean_emis.F90 for details.
Default: FALSE
-
-List of nitrogen deposition fluxes to be sent from CAM to surface models.
-Default: set by build-namelist.
-
-
-Year first to use in nitrogen deposition stream data. Set by case xml variable
-CAM_STREAM_NDEP_YEAR_FIRST
+Year first to use in nitrogen deposition stream data.
Year last to use in nitrogen deposition stream data.
-Set by case xml variable CAM_STREAM_NDEP_YEAR_LAST
-Model year to align with CAM_STREAM_NDEP_YEAR_FIRST.
-Set by case xml variable CAM_STREAM_NDEP_YEAR_ALIGN
+Model year to align with stream_ndep_year_first.
-NDEP stream data filename.
-Set by case xml variable CAM_STREAM_NDEP_DATA_FILENAME.
+Nitrogen deposition stream data filename.
-NDEP mesh file corresponding to sream_ndep_data_filename.
-Set by case xml variable CAM_STREAM_NDEP_MESH_FILENAME.
+Grid mesh file corresponding to stream_ndep_data_filename.
+ group="camexp" valid_values="1850,2000,2010,1850-2000,1850-2015">
This varible is only used internally by build-namelist to determine
appropriate defaults for climatological or transient forcing datasets.
Default: set by build-namelist.
diff --git a/bld/namelist_files/use_cases/1850_cam_lt.xml b/bld/namelist_files/use_cases/1850_cam_lt.xml
index 84a3b2c314..d046c8bec7 100644
--- a/bld/namelist_files/use_cases/1850_cam_lt.xml
+++ b/bld/namelist_files/use_cases/1850_cam_lt.xml
@@ -61,4 +61,7 @@
CYCLICAL
1850
+
+1850
+
diff --git a/bld/namelist_files/use_cases/1850_cam_mt.xml b/bld/namelist_files/use_cases/1850_cam_mt.xml
index 5a535f27be..68e7ca4a1a 100644
--- a/bld/namelist_files/use_cases/1850_cam_mt.xml
+++ b/bld/namelist_files/use_cases/1850_cam_mt.xml
@@ -56,4 +56,7 @@
CYCLICAL
1850
+
+1850
+
diff --git a/bld/namelist_files/use_cases/2000_geoschem.xml b/bld/namelist_files/use_cases/2000_geoschem.xml
index 3d2c5507b5..384d46b42a 100644
--- a/bld/namelist_files/use_cases/2000_geoschem.xml
+++ b/bld/namelist_files/use_cases/2000_geoschem.xml
@@ -36,9 +36,6 @@
-
-
-
1,30,365,240,240,480,365,73,30
diff --git a/bld/namelist_files/use_cases/2000_trop_strat_vbs_cam6.xml b/bld/namelist_files/use_cases/2000_trop_strat_vbs_cam6.xml
index 47d97d6249..039685230f 100644
--- a/bld/namelist_files/use_cases/2000_trop_strat_vbs_cam6.xml
+++ b/bld/namelist_files/use_cases/2000_trop_strat_vbs_cam6.xml
@@ -131,8 +131,6 @@
2000
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
diff --git a/bld/namelist_files/use_cases/2010_cam6.xml b/bld/namelist_files/use_cases/2010_cam6.xml
index 239f5436f6..641a8a8689 100644
--- a/bld/namelist_files/use_cases/2010_cam6.xml
+++ b/bld/namelist_files/use_cases/2010_cam6.xml
@@ -83,4 +83,7 @@
'CYCLICAL'
2010
+
+2010
+
diff --git a/bld/namelist_files/use_cases/2010_geoschem.xml b/bld/namelist_files/use_cases/2010_geoschem.xml
index b1b0f9f2eb..8f50e0321d 100644
--- a/bld/namelist_files/use_cases/2010_geoschem.xml
+++ b/bld/namelist_files/use_cases/2010_geoschem.xml
@@ -34,7 +34,6 @@
-
@@ -166,4 +165,6 @@
'so4_a3',
+2010
+
diff --git a/bld/namelist_files/use_cases/2010_trop_strat_vbs_cam6.xml b/bld/namelist_files/use_cases/2010_trop_strat_vbs_cam6.xml
index a0b07f3248..7cd77b9b58 100644
--- a/bld/namelist_files/use_cases/2010_trop_strat_vbs_cam6.xml
+++ b/bld/namelist_files/use_cases/2010_trop_strat_vbs_cam6.xml
@@ -322,8 +322,6 @@
2010
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
diff --git a/bld/namelist_files/use_cases/aquaplanet_cam7.xml b/bld/namelist_files/use_cases/aquaplanet_cam7.xml
new file mode 100644
index 0000000000..8e1c9fba5a
--- /dev/null
+++ b/bld/namelist_files/use_cases/aquaplanet_cam7.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+atm/cam/inic/se/QPLT_L58_ne3pg3_c241127.nc
+atm/cam/inic/se/QPLT_L58_ne30pg3_c241127.nc
+atm/cam/inic/se/QPMT_L93_ne3pg3_c241223.nc
+atm/cam/inic/se/QPMT_L93_ne30pg3_c241223.nc
+
+
+0.
+0.
+0.
+fixed_parameters
+
+
+ false
+
+
+1.650e-6
+0.306e-6
+348.0e-6
+0.0
+0.0
+
+
+atm/cam/solar/ape_solar_ave_tsi_1365.nc
+
+
+apeozone_cam3_5_54.nc
+aquaplanet_ozone_hightop_c20180412.nc
+atm/cam/ozone
+OZONE
+CYCLICAL
+1990
+
+
+86164.10063718943
+6.37100e6
+9.79764
+28.96623324623746
+18.01618112892741
+1.846e3
+
+.false.
+
+.true.
+.true.
+ ""
+ ""
+ ""
+ ""
+ ""
+
+ 0.0
+
+
+ 'A:Q:H2O', 'N:O2:O2', 'N:CO2:CO2', 'N:ozone:O3',
+ 'N:N2O:N2O', 'N:CH4:CH4', 'N:CFC11:CFC11', 'N:CFC12:CFC12'
+
+
diff --git a/bld/namelist_files/use_cases/hist_cam6.xml b/bld/namelist_files/use_cases/hist_cam6.xml
index ac93a56a62..9b79a04132 100644
--- a/bld/namelist_files/use_cases/hist_cam6.xml
+++ b/bld/namelist_files/use_cases/hist_cam6.xml
@@ -31,6 +31,6 @@
'CO2','CH4','N2O','CFC11eq','CFC12'
- 1850-2000
+ 1850-2015
diff --git a/bld/namelist_files/use_cases/hist_cam_lt.xml b/bld/namelist_files/use_cases/hist_cam_lt.xml
index c436b97c1f..8f071a149b 100644
--- a/bld/namelist_files/use_cases/hist_cam_lt.xml
+++ b/bld/namelist_files/use_cases/hist_cam_lt.xml
@@ -42,4 +42,7 @@
INTERP_MISSING_MONTHS
SERIAL
+
+1850-2015
+
diff --git a/bld/namelist_files/use_cases/hist_cam_mt.xml b/bld/namelist_files/use_cases/hist_cam_mt.xml
index c100cc6e85..0c8e2e85fb 100644
--- a/bld/namelist_files/use_cases/hist_cam_mt.xml
+++ b/bld/namelist_files/use_cases/hist_cam_mt.xml
@@ -37,4 +37,7 @@
INTERP_MISSING_MONTHS
SERIAL
+
+1850-2015
+
diff --git a/bld/namelist_files/use_cases/hist_geoschem.xml b/bld/namelist_files/use_cases/hist_geoschem.xml
index 1cfff4a8a9..587ec4c1a4 100644
--- a/bld/namelist_files/use_cases/hist_geoschem.xml
+++ b/bld/namelist_files/use_cases/hist_geoschem.xml
@@ -31,8 +31,6 @@
SERIAL
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
@@ -163,4 +161,6 @@
'so4_a3',
+1850-2015
+
diff --git a/bld/namelist_files/use_cases/hist_geoschem_nudged.xml b/bld/namelist_files/use_cases/hist_geoschem_nudged.xml
index 3c87bcb4fc..6d6e94c6c5 100644
--- a/bld/namelist_files/use_cases/hist_geoschem_nudged.xml
+++ b/bld/namelist_files/use_cases/hist_geoschem_nudged.xml
@@ -31,8 +31,6 @@
SERIAL
-'noy', 'nhx'
-
.true.
@@ -218,4 +216,6 @@
'so4_a3',
+1850-2015
+
diff --git a/bld/namelist_files/use_cases/hist_trop_strat_nudged_cam6.xml b/bld/namelist_files/use_cases/hist_trop_strat_nudged_cam6.xml
index ff2a92b3ef..026e329d7a 100644
--- a/bld/namelist_files/use_cases/hist_trop_strat_nudged_cam6.xml
+++ b/bld/namelist_files/use_cases/hist_trop_strat_nudged_cam6.xml
@@ -127,8 +127,6 @@
'so4_a2 -> $INPUTDATA_ROOT/atm/cam/chem/emis/emissions_ssp585/emissions-cmip6-ScenarioMIP_IAMC-REMIND-MAGPIE-ssp585-1-1_so4_a2_anthro-res_surface_mol_175001-210101_0.9x1.25_c20190224.nc'
-'noy', 'nhx'
-
.true.
'atm/cam/met/nudging/MERRA2_fv09_32L/'
diff --git a/bld/namelist_files/use_cases/hist_trop_strat_vbsext_cam6.xml b/bld/namelist_files/use_cases/hist_trop_strat_vbsext_cam6.xml
index 38e1439ed0..1605081d6d 100644
--- a/bld/namelist_files/use_cases/hist_trop_strat_vbsext_cam6.xml
+++ b/bld/namelist_files/use_cases/hist_trop_strat_vbsext_cam6.xml
@@ -26,8 +26,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
@@ -44,9 +42,9 @@
.false.
.false.
-
+
- 'CFC11STAR', 'AODDUST', 'AODDUST02', 'T', 'U', 'V', 'O3', 'OH', 'O3S',
+ 'CFC11STAR', 'AODDUST', 'AODDUST02', 'T', 'U', 'V', 'O3', 'OH', 'O3S',
'NO3', 'HO2', 'LNO_COL_PROD', 'NO2_CLXF', 'SFNO', 'SFNH3', 'BRO', 'CH3CL',
'CLO', 'CO2', 'HCL', 'HO2', 'HOCL', 'H2O', 'PHIS', 'Z3',
'BENZENE', 'C2H2', 'C2H4', 'C2H6', 'C3H8', 'CCL4', 'CFC11', 'CFC113',
@@ -85,14 +83,14 @@
'AODNIRstdn', 'AODUVstdn', 'AODdn_accum', 'AODdn_coarse', 'AODdnDUST01', 'AODdnDUST02', 'AODdnDUST03', 'AODVISstdn',
'AODUVstdn', 'AODNIRstdn', 'AODNIRstdn', 'AODVISdn', 'AODUVdn', 'EXTINCTdn', 'EXTxASYMdn', 'EXTINCTNIRdn',
'EXTINCTUVdn', 'WD_NC4CH2OH', 'WD_NC4CHO', 'WD_NDEP', 'WD_NH3', 'WD_NH4', 'WD_NHDEP',
- 'WD_NOA', 'WD_NTERPOOH', 'WD_ONITR', 'WD_PHENOOH', 'WD_POOH', 'WD_ROOH', 'WD_SO2',
+ 'WD_NOA', 'WD_NTERPOOH', 'WD_ONITR', 'WD_PHENOOH', 'WD_POOH', 'WD_ROOH', 'WD_SO2',
'WD_SOAGbb0', 'WD_SOAGbb1', 'WD_SOAGbb2', 'WD_SOAGbb3', 'WD_SOAGbb4',
'WD_SOAGbg0', 'WD_SOAGbg1', 'WD_SOAGbg2', 'WD_SOAGbg3', 'WD_SOAGbg4',
'WD_SOAGff0', 'WD_SOAGff1', 'WD_SOAGff2', 'WD_SOAGff3', 'WD_SOAGff4',
'WD_SVOCbb','WD_SVOCff', 'WD_TERP2OOH', 'WD_TERPNIT', 'WD_TERPOOH',
- 'DF_CO', 'DF_GLYALD',
+ 'DF_CO', 'DF_GLYALD',
'dry_deposition_NHx_as_N', 'DF_NH3', 'DF_NH4', 'DF_NO', 'DF_NO2', 'DF_NOA', 'DF_NTERPOOH', 'DF_O3',
- 'DF_ONITR', 'DF_PAN', 'DF_PHENOOH', 'DF_POOH', 'DF_ROOH', 'DF_SO2',
+ 'DF_ONITR', 'DF_PAN', 'DF_PHENOOH', 'DF_POOH', 'DF_ROOH', 'DF_SO2',
'DF_SOAGbb0', 'DF_SOAGbb1', 'DF_SOAGbb2', 'DF_SOAGbb3', 'DF_SOAGbb4',
'DF_SOAGbg0', 'DF_SOAGbg1', 'DF_SOAGbg2', 'DF_SOAGbg3', 'DF_SOAGbg4', 'DF_SOAGff0', 'DF_SOAGff1', 'DF_SOAGff2', 'DF_SOAGff3', 'DF_SOAGff4',
'DF_SVOCbb','DF_SVOCff', 'DF_TERP2OOH', 'DF_TERPNIT', 'DF_TERPOOH', 'DF_TERPROD1',
diff --git a/bld/namelist_files/use_cases/hist_trop_strat_vbsfire_cam6.xml b/bld/namelist_files/use_cases/hist_trop_strat_vbsfire_cam6.xml
index 7219cf0322..791b6f3737 100644
--- a/bld/namelist_files/use_cases/hist_trop_strat_vbsfire_cam6.xml
+++ b/bld/namelist_files/use_cases/hist_trop_strat_vbsfire_cam6.xml
@@ -67,8 +67,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
diff --git a/bld/namelist_files/use_cases/sd_cam6.xml b/bld/namelist_files/use_cases/sd_cam6.xml
index 146268c62b..2e81857089 100644
--- a/bld/namelist_files/use_cases/sd_cam6.xml
+++ b/bld/namelist_files/use_cases/sd_cam6.xml
@@ -28,7 +28,7 @@
'SERIAL'
'atm/cam/ozone_strataero'
- 'ozone_strataero_WACCM_L70_zm5day_18500101-20150103_CMIP6ensAvg_c180923.nc'
+ 'ozone_strataero_WACCM_L70_zm5day_18500101-20150103_CMIP6ensAvg_c180923.nc'
.true.
'CHEM_LBC_FILE'
@@ -36,4 +36,6 @@
'SERIAL'
'CO2','CH4','N2O','CFC11eq','CFC12'
+ 1850-2015
+
diff --git a/bld/namelist_files/use_cases/sd_trop_strat2_cam6.xml b/bld/namelist_files/use_cases/sd_trop_strat2_cam6.xml
index 4075ad584c..4d32182f8a 100644
--- a/bld/namelist_files/use_cases/sd_trop_strat2_cam6.xml
+++ b/bld/namelist_files/use_cases/sd_trop_strat2_cam6.xml
@@ -31,8 +31,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1, 1
@@ -49,7 +47,7 @@
.false.
.false.
-
+
'CFC11STAR', 'AODDUST', 'AODDUST02', 'T', 'U', 'V', 'O3', 'OH',
'NO3', 'HO2', 'LNO_COL_PROD', 'NO2_CLXF', 'SFNO', 'SFNH3', 'BRO', 'CH3CL',
@@ -161,46 +159,46 @@
'DF_BIGALD4', 'DF_BIGALK', 'DF_BIGENE', 'DF_BZALD', 'DF_C2H2', 'DF_C2H4', 'DF_C2H6', 'DF_C3H6',
'DF_C3H8', 'DF_CRESOL', 'DF_DMS', 'DF_GLYOXAL', 'DF_ISOP', 'DF_MACR', 'DF_MEK',
'DF_MVK', 'DF_N2O5', 'DF_PBZNIT', 'DF_PHENOL', 'DF_TEPOMUC', 'DF_TOLUENE', 'DF_XYLENES', 'DF_XYLOL',
- 'WD_BCARY', 'WD_BENZENE', 'WD_BEPOMUC', 'WD_BIGALD1', 'WD_BIGALD2', 'WD_BIGALD3', 'WD_BIGALD4',
+ 'WD_BCARY', 'WD_BENZENE', 'WD_BEPOMUC', 'WD_BIGALD1', 'WD_BIGALD2', 'WD_BIGALD3', 'WD_BIGALD4',
'WD_BIGALK', 'WD_BIGENE', 'WD_BZALD',
- 'WD_C2H2', 'WD_C2H4', 'WD_C2H6', 'WD_C3H6', 'WD_C3H8', 'WD_CO', 'WD_CRESOL', 'WD_DMS', 'WD_GLYOXAL', 'WD_ISOP',
+ 'WD_C2H2', 'WD_C2H4', 'WD_C2H6', 'WD_C3H6', 'WD_C3H8', 'WD_CO', 'WD_CRESOL', 'WD_DMS', 'WD_GLYOXAL', 'WD_ISOP',
'WD_MEK', 'WD_MPAN',
'WD_N2O5', 'WD_NO', 'WD_NO2', 'WD_PAN', 'WD_PBZNIT', 'WD_PHENOL', 'WD_TEPOMUC','WD_TOLUENE', 'WD_XYLENES', 'WD_XYLOL'
'MEG_APIN','MEG_BPIN','MEG_LIMON','MEG_MYRC',
- 'ISOPFDN', 'ISOPFNP', 'ISOPN3B', 'ISOPN2B', 'ISOPN1D', 'ISOPN4D',
+ 'ISOPFDN', 'ISOPFNP', 'ISOPN3B', 'ISOPN2B', 'ISOPN1D', 'ISOPN4D',
'ISOPNBNO3', 'ISOPNOOHB', 'ISOPNOOHD', 'INHEB','INHED',
'HPALD1','HPALD4','ISOPHFP',
- 'MVKN', 'MACRN', 'HMHP', 'NO3CH2CHO', 'HYPERACET', 'HCOCH2OOH',
+ 'MVKN', 'MACRN', 'HMHP', 'NO3CH2CHO', 'HYPERACET', 'HCOCH2OOH',
'DHPMPAL', 'MVKOOH', 'ISOPOH',
'HPALDB1C','HPALDB4C','ICHE','ISOPFDNC','ISOPFNC',
- 'TERPNT', 'TERPNS','TERPNT1', 'TERPNS1', 'TERPNPT', 'TERPNPS', 'TERPNPT1',
+ 'TERPNT', 'TERPNS','TERPNT1', 'TERPNS1', 'TERPNPT', 'TERPNPS', 'TERPNPT1',
'TERPNPS1', 'TERPFDN', 'SQTN', 'TERPHFN',
- 'TERP1OOH', 'TERPDHDP', 'TERPF2', 'TERPF1', 'TERPA', 'TERPA2', 'TERPK', 'TERPAPAN',
+ 'TERP1OOH', 'TERPDHDP', 'TERPF2', 'TERPF1', 'TERPA', 'TERPA2', 'TERPK', 'TERPAPAN',
'TERPACID', 'TERPA2PAN',
'TERPACID2','TERPACID3','TERPA3PAN','TERPOOHL','TERPA3',
'APIN','BPIN','LIMON','MYRC',
'DF_ISOPFDN', 'DF_ISOPFNP', 'DF_ISOPN3B', 'DF_ISOPN2B', 'DF_ISOPN1D', 'DF_ISOPN4D', 'DF_ISOPNBNO3', 'DF_ISOPNOOHB', 'DF_ISOPNOOHD',
- 'DF_INHEB','DF_INHED',
+ 'DF_INHEB','DF_INHED',
'DF_HPALD1','DF_HPALD4','DF_ISOPHFP','DF_MVKN', 'DF_MACRN', 'DF_HMHP' 'DF_NO3CH2CHO',
'DF_HYPERACET', 'DF_HCOCH2OOH', 'DF_DHPMPAL', 'DF_MVKOOH', 'DF_ISOPOH',
'DF_HPALDB1C','DF_HPALDB4C','DF_ICHE','DF_ISOPFDNC','DF_ISOPFNC',
- 'DF_TERPNT', 'DF_TERPNS','DF_TERPNT1', 'DF_TERPNS1', 'DF_TERPNPT', 'DF_TERPNPS',
+ 'DF_TERPNT', 'DF_TERPNS','DF_TERPNT1', 'DF_TERPNS1', 'DF_TERPNPT', 'DF_TERPNPS',
'DF_TERPNPT1', 'DF_TERPNPS1', 'DF_TERPFDN', 'DF_SQTN', 'DF_TERPHFN',
- 'DF_TERP1OOH', 'DF_TERPDHDP', 'DF_TERPF2', 'DF_TERPF1', 'DF_TERPA',
- 'DF_TERPA2', 'DF_TERPK', 'DF_TERPAPAN', 'DF_TERPACID', 'DF_TERPA2PAN',
+ 'DF_TERP1OOH', 'DF_TERPDHDP', 'DF_TERPF2', 'DF_TERPF1', 'DF_TERPA',
+ 'DF_TERPA2', 'DF_TERPK', 'DF_TERPAPAN', 'DF_TERPACID', 'DF_TERPA2PAN',
'DF_TERPACID2','DF_TERPACID3','DF_TERPA3PAN','DF_TERPOOHL','DF_TERPA3',
'DF_APIN','DF_BPIN','DF_LIMON','DF_MYRC',
- 'WD_ISOPFDN', 'WD_ISOPFNP', 'WD_ISOPN3B', 'WD_ISOPN2B', 'WD_ISOPN1D', 'WD_ISOPN4D',
+ 'WD_ISOPFDN', 'WD_ISOPFNP', 'WD_ISOPN3B', 'WD_ISOPN2B', 'WD_ISOPN1D', 'WD_ISOPN4D',
'WD_ISOPNBNO3', 'WD_ISOPNOOHB', 'WD_ISOPNOOHD',
- 'WD_INHEB','WD_INHED',
+ 'WD_INHEB','WD_INHED',
'WD_HPALD1','WD_HPALD4','WD_ISOPHFP','WD_MVKN', 'WD_MACRN', 'WD_HMHP' 'WD_NO3CH2CHO',
'WD_HYPERACET', 'WD_HCOCH2OOH', 'WD_DHPMPAL', 'WD_MVKOOH', 'WD_ISOPOH',
'WD_HPALDB1C','WD_HPALDB4C','WD_ICHE','WD_ISOPFDNC','WD_ISOPFNC',
- 'WD_TERPNT', 'WD_TERPNS','WD_TERPNT1', 'WD_TERPNS1', 'WD_TERPNPT', 'WD_TERPNPS',
+ 'WD_TERPNT', 'WD_TERPNS','WD_TERPNT1', 'WD_TERPNS1', 'WD_TERPNPT', 'WD_TERPNPS',
'WD_TERPNPT1', 'WD_TERPNPS1', 'WD_TERPFDN', 'WD_SQTN', 'WD_TERPHFN',
- 'WD_TERP1OOH', 'WD_TERPDHDP', 'WD_TERPF2', 'WD_TERPF1', 'WD_TERPA',
+ 'WD_TERP1OOH', 'WD_TERPDHDP', 'WD_TERPF2', 'WD_TERPF1', 'WD_TERPA',
'WD_TERPA2', 'WD_TERPK', 'WD_TERPAPAN','WD_TERPACID','WD_TERPA2PAN',
'WD_TERPACID2','WD_TERPACID3','WD_TERPA3PAN','WD_TERPOOHL','WD_TERPA3',
'WD_APIN','WD_BPIN','WD_LIMON','WD_MYRC'
diff --git a/bld/namelist_files/use_cases/sd_trop_strat_vbs_cam6.xml b/bld/namelist_files/use_cases/sd_trop_strat_vbs_cam6.xml
index 2fe99cb0eb..29c41758ca 100644
--- a/bld/namelist_files/use_cases/sd_trop_strat_vbs_cam6.xml
+++ b/bld/namelist_files/use_cases/sd_trop_strat_vbs_cam6.xml
@@ -41,8 +41,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1,30,365,240,240,480,365,73,30
diff --git a/bld/namelist_files/use_cases/sd_waccm_tsmlt_cam6.xml b/bld/namelist_files/use_cases/sd_waccm_tsmlt_cam6.xml
index 9da740a7ae..f096415e31 100644
--- a/bld/namelist_files/use_cases/sd_waccm_tsmlt_cam6.xml
+++ b/bld/namelist_files/use_cases/sd_waccm_tsmlt_cam6.xml
@@ -47,8 +47,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1, 5, 20, 40, 120, 240, 365, 73, 365
diff --git a/bld/namelist_files/use_cases/waccm_ma_1850_cam6.xml b/bld/namelist_files/use_cases/waccm_ma_1850_cam6.xml
index 24b55facc2..fbd7423680 100644
--- a/bld/namelist_files/use_cases/waccm_ma_1850_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_ma_1850_cam6.xml
@@ -46,8 +46,6 @@
CYCLICAL
1850
-'noy', 'nhx'
-
1, 30, 120, 240, 240, 480, 365, 73, 30
diff --git a/bld/namelist_files/use_cases/waccm_ma_hist_cam6.xml b/bld/namelist_files/use_cases/waccm_ma_hist_cam6.xml
index 042a153fe4..3bc7948bce 100644
--- a/bld/namelist_files/use_cases/waccm_ma_hist_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_ma_hist_cam6.xml
@@ -40,8 +40,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1, 30, 120, 240, 240, 480, 365, 73, 30
diff --git a/bld/namelist_files/use_cases/waccm_sc_1850_cam6.xml b/bld/namelist_files/use_cases/waccm_sc_1850_cam6.xml
index dbc6b0921b..77184615a1 100644
--- a/bld/namelist_files/use_cases/waccm_sc_1850_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_sc_1850_cam6.xml
@@ -88,4 +88,7 @@
'UTEND4', 'UTEND5', 'FRONTGF', 'FRONTGFA', 'EKGW', 'QNO', 'QRLNLTE', 'QRL_TOT', 'DUV', 'DVV', 'TTPXMLC'
+
+1850
+
diff --git a/bld/namelist_files/use_cases/waccm_tsmlt_1850_cam6.xml b/bld/namelist_files/use_cases/waccm_tsmlt_1850_cam6.xml
index 86e6af3bab..eefbf88163 100644
--- a/bld/namelist_files/use_cases/waccm_tsmlt_1850_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_tsmlt_1850_cam6.xml
@@ -45,8 +45,6 @@
CYCLICAL
1850
-'noy', 'nhx'
-
1, 5, 20, 40, 120, 240, 365, 73, 365
diff --git a/bld/namelist_files/use_cases/waccm_tsmlt_2000_cam6.xml b/bld/namelist_files/use_cases/waccm_tsmlt_2000_cam6.xml
index efc485e990..fa5848ea40 100644
--- a/bld/namelist_files/use_cases/waccm_tsmlt_2000_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_tsmlt_2000_cam6.xml
@@ -242,8 +242,6 @@
'so4_a2 -> $INPUTDATA_ROOT/atm/cam/chem/emis/CMIP6_emissions_2000climo_2deg/emissions-cmip6_so4_a2_anthro-res_surface_2000climo_1.9x2.5_c20200422.nc'
-'noy', 'nhx'
-
1, 5, 20, 40, 120, 240, 365, 73, 365
diff --git a/bld/namelist_files/use_cases/waccm_tsmlt_2010_cam6.xml b/bld/namelist_files/use_cases/waccm_tsmlt_2010_cam6.xml
index fa65883ce1..ee6715c914 100644
--- a/bld/namelist_files/use_cases/waccm_tsmlt_2010_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_tsmlt_2010_cam6.xml
@@ -142,8 +142,6 @@
'so4_a2 -> $INPUTDATA_ROOT/atm/cam/chem/emis/CMIP6_emissions_2010climo/emissions-cmip6_so4_a2_anthro-res_surface_2010climo_0.9x1.25_c20180918.nc'
-'noy', 'nhx'
-
1, 5, 20, 40, 120, 240, 365, 73, 365
diff --git a/bld/namelist_files/use_cases/waccm_tsmlt_hist_cam6.xml b/bld/namelist_files/use_cases/waccm_tsmlt_hist_cam6.xml
index 00fb808a52..623d08bc95 100644
--- a/bld/namelist_files/use_cases/waccm_tsmlt_hist_cam6.xml
+++ b/bld/namelist_files/use_cases/waccm_tsmlt_hist_cam6.xml
@@ -38,8 +38,6 @@
INTERP_MISSING_MONTHS
-'noy', 'nhx'
-
1, 5, 20, 40, 120, 240, 365, 73, 365
diff --git a/cime_config/buildnml b/cime_config/buildnml
index 9c156b66d5..674d1a29ea 100755
--- a/cime_config/buildnml
+++ b/cime_config/buildnml
@@ -48,12 +48,6 @@ def buildnml(case, caseroot, compname):
RUN_REFTOD = case.get_value("RUN_REFTOD")
COMP_INTERFACE = case.get_value("COMP_INTERFACE")
- stream_ndep_year_first = case.get_value("CAM_STREAM_NDEP_YEAR_FIRST")
- stream_ndep_year_last = case.get_value("CAM_STREAM_NDEP_YEAR_LAST")
- stream_ndep_year_align = case.get_value("CAM_STREAM_NDEP_YEAR_ALIGN")
- stream_ndep_data_filename = case.get_value("CAM_STREAM_NDEP_DATA_FILENAME")
- stream_ndep_mesh_filename = case.get_value("CAM_STREAM_NDEP_MESH_FILENAME")
-
testsrc = os.path.join(srcroot, "components", "cam")
if os.path.exists(testsrc):
srcroot = testsrc
@@ -173,12 +167,6 @@ def buildnml(case, caseroot, compname):
buildnl_opts += ["-inputdata", input_data_list]
- CAM_NAMELIST_OPTS += " stream_ndep_year_first=" + stream_ndep_year_first
- CAM_NAMELIST_OPTS += " stream_ndep_year_last=" + stream_ndep_year_last
- CAM_NAMELIST_OPTS += " stream_ndep_year_align=" + stream_ndep_year_align
- CAM_NAMELIST_OPTS += " stream_ndep_data_filename='" + stream_ndep_data_filename.strip() + "'"
- CAM_NAMELIST_OPTS += " stream_ndep_mesh_filename='" + stream_ndep_mesh_filename.strip() + "'"
-
buildnl_opts += ["-namelist",
'" &atmexp ' + CAM_NAMELIST_OPTS + '/" ']
diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml
index 2ab0a50558..f87f153826 100644
--- a/cime_config/config_component.xml
+++ b/cime_config/config_component.xml
@@ -204,6 +204,7 @@
-aquaplanet
-aquaplanet
+ -chem none
-offline_drv rad
@@ -255,6 +256,7 @@
aquaplanet_cam6
aquaplanet_cam6
aquaplanet_rce_cam6
+ aquaplanet_cam7
aquaplanet_waccm_2000
2010_cam6
@@ -383,79 +385,6 @@
User mods to apply to specific compset matches.
-
-
-
- char
- 2000
-
- 1850
- 2010
- 1850
- 2015
-
- run_component_cam
- env_run.xml
- Nitrogen deposition data year first
-
-
-
- char
- 2000
-
- 2010
- 1850
- 2015
- 2101
-
- run_component_cam
- env_run.xml
- Nitrogen deposition data year last
-
-
-
- char
- 1
-
- 1850
- 2015
-
- run_component_cam
- env_run.xml
- Nitrogen deposition align CAM_STREAM_NDEP_YEAR_FIRST with this model year
-
-
-
-
- char
- UNSET
-
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP5-8.5-WACCM_1849-2101_monthly_c191007.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP1-2.6-WACCM_1849-2101_monthly_c191007.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP2-4.5-WACCM_1849-2101_monthly_c191007.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_SSP370_b.e21.BWSSP370cmip6.f09_g17.CMIP6-SSP3-7.0-WACCM.002_1849-2101_monthly_0.9x1.25_c211216.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc
- $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc
-
- run_component_cam
- env_run.xml
- Nitrogen deposition data filename
-
-
-
- char
- $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc
- run_component_cam
- env_run.xml
- Nitrogen deposition mesh filename (corresponding to the CAM_STREAM_NDEP_DATA_FILENAME)
-
-
=========================================
CAM naming conventions
diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml
index c04f925dda..31eba44982 100644
--- a/cime_config/config_compsets.xml
+++ b/cime_config/config_compsets.xml
@@ -291,6 +291,16 @@
+
+ QPLT
+ 2000_CAM70%LT_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV
+
+
+
+ QPMT
+ 2000_CAM70%MT_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV
+
+
QPC2000climo
2000_CAM60%CT1S_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV
diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml
index d4fc9d40a8..d0789ac1f3 100644
--- a/cime_config/testdefs/testlist_cam.xml
+++ b/cime_config/testdefs/testlist_cam.xml
@@ -49,7 +49,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -161,7 +161,6 @@
-
@@ -191,13 +190,42 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2127,15 +2155,7 @@
-
-
-
-
-
-
-
-
-
+
diff --git a/cime_config/testdefs/testmods_dirs/cam/dae/shell_commands b/cime_config/testdefs/testmods_dirs/cam/dae/shell_commands
deleted file mode 100644
index f091402c1d..0000000000
--- a/cime_config/testdefs/testmods_dirs/cam/dae/shell_commands
+++ /dev/null
@@ -1,6 +0,0 @@
-# Test CAM post-Data Assimilation handling
-SRCROOT="`./xmlquery --value COMP_ROOT_DIR_ATM`"
-DAFILE="${SRCROOT}/test/system/da_cam_no_data_mod.sh"
-./xmlchange DATA_ASSIMILATION_SCRIPT=${DAFILE}
-# Turn off any use case
-./xmlchange CAM_NML_USE_CASE="UNSET"
diff --git a/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cam b/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cam
deleted file mode 100644
index f837808297..0000000000
--- a/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cam
+++ /dev/null
@@ -1,4 +0,0 @@
-! CAM history files have different names when DA is active so turn them off
-nhtfrq = 0,-10000,-10000,-10000,-10000,-10000
-fexcl1 = 'OMEGA','OMEGAT','PHIS','PS','PSL','QRS','T','U','UU','V','VT','VU','VV','Z3'
-fexcl2 = 'T','U','V'
diff --git a/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cpl
deleted file mode 100644
index 398535cf65..0000000000
--- a/cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cpl
+++ /dev/null
@@ -1,2 +0,0 @@
-reprosum_diffmax=1.0e-14
-reprosum_recompute=.true.
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/shell_commands b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/shell_commands
index 09a1939ddb..11a171a04e 100644
--- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/shell_commands
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/shell_commands
@@ -1,8 +1,7 @@
CAM_CONFIG_OPTS=`./xmlquery CAM_CONFIG_OPTS --value`
if [[ $CAM_CONFIG_OPTS != *"-cosp"* ]]; then
- ./xmlchange -append CAM_CONFIG_OPTS="-cosp"
+ ./xmlchange --append CAM_CONFIG_OPTS="-cosp"
fi
./xmlchange ROF_NCPL=\$ATM_NCPL
./xmlchange GLC_NCPL=\$ATM_NCPL
-./xmlchange CAM_NML_USE_CASE=UNSET
./xmlchange RUN_STARTDATE="19950101"
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/user_nl_cam b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/user_nl_cam
index ddff96685c..a2a8169e6f 100644
--- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/user_nl_cam
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/user_nl_cam
@@ -2,4 +2,5 @@ mfilt=1,1,1,1,1,1
ndens=1,1,1,1,1,1
nhtfrq=3,3,3,3,3,3
inithist='ENDOFRUN'
-fexcl1='CFAD_DBZE94_CS','CLDTOT_CALCS','CLD_CAL_NOTCS','CS_MIXCERT','CS_MIXPOSS','CS_NOPRECIP','CS_PIA','CS_RAINPOSS','CS_RAINPROB'
+fexcl1='CFAD_DBZE94_CS','CLDTOT_CALCS','CLD_CAL_NOTCS','CS_MIXCERT','CS_MIXPOSS','CS_NOPRECIP','CS_PIA',
+ 'CS_RAINPOSS','CS_RAINPROB','CS_SNOWCERT','CS_SNOWPOSS'
diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_cam b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_cam
index 351fe92801..01d1b71f8f 100644
--- a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_cam
+++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_cam
@@ -1,6 +1,6 @@
dust_emis_method = 'Leung_2023'
-fincl2 = 'dst_a1SF', 'dst_a2SF', 'dst_a3SF'
+fincl2 = 'dst_a1SF', 'dst_a2SF', 'dst_a3SF', 'a2x_NHXDEP','a2x_NOYDEP'
mfilt=1,1,1,1,1,1
ndens=1,1,1,1,1,1
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 87cb50a54a..2623d3b047 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,5 +1,678 @@
===============================================================
+Tag name: cam6_4_058
+Originator(s): PeterHjortLauritzen, adamrher, bstephens82, jimmielin, nusbaume
+Date: Jan 31 2025
+One-line Summary: Fix Exner bug in CLUBB interface and change CLUBB namelist
+Github PR URL: https://github.com/ESCOMP/CAM/pull/1231
+
+Purpose of changes (include the issue number and title text for each relevant GitHub issue):
+
+The computation of the Exner function in the CLUBB interface code currently passes an incorrect version to the PBL utilities.
+The PBL utilities expect the "Stull" definition of the Exner function rather than the traditional "atmospheric" Exner function.
+(Github issue #1222)
+
+The CLUBB group has recommended a namelist change to address this issue.
+(Github issue #1208)
+
+Snapshots of tphysbc/tphysac subroutine-level variables are always in the "after" state for both tapes
+(Github issue #1241)
+
+Describe any changes made to build system: none
+
+Describe any changes made to the namelist:
+
+M bld/namelist_files/namelist_defaults_cam.xml
+ - Turn off 'clubb_l_min_wp2_from_corr_wx' option in CLUBB
+
+List any changes to the defaults for the boundary datasets: none
+
+Describe any substantial timing or memory changes: not evaluated
+
+Code reviewed by: cacraigucar
+
+List all files eliminated: none
+
+List all files added and what they do: none
+
+List all existing files that have been modified, and describe the changes:
+
+M src/physics/cam/cam_snapshot.F90
+ - Switch to correct tape for tphysac/tphysbc snapshot
+
+M src/physics/cam/clubb_intr.F90
+ - Replace CLUBB exner with "Stull" Exner, which is what is actually expected.
+
+If there were any failures reported from running test_driver.sh on any test
+platform, and checkin with these failures has been OK'd by the gatekeeper,
+then copy the lines from the td.*.status files for the failed tests to the
+appropriate machine below. All failed tests must be justified.
+
+NLCOMP and baseline failures for all applications using CLUBB.
+
+derecho/intel/aux_cam:
+
+ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL)
+SMS_Ld1.f09_f09_mg17.FCHIST_GC.derecho_intel.cam-outfrq1d (Overall: DIFF)
+ - pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856
+
+SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie (Overall: FAIL)
+SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: FAIL)
+ - pre-existing failures due to build-namelist error requiring CLM/CTSM external update
+
+derecho/nvhpc/aux_cam:
+
+ERS_Ln9.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_gpu_default (Overall: FAIL)
+ - pre-existing failure -- issue #1220
+
+izumi/nag/aux_cam:
+
+All non-CAM6/CAM7 tests pass (CAM6 and CAM7 differences expected)
+
+izumi/gnu/aux_cam:
+
+All non-CAM6/CAM7 tests pass (CAM6 and CAM7 differences expected)
+
+CAM tag used for the baseline comparison tests if different than previous
+tag:
+
+Summarize any changes to answers, i.e.,
+- what code configurations:
+- what platforms/compilers:
+- nature of change (roundoff; larger than roundoff but same climate; new
+ climate):
+
+If bitwise differences were observed, how did you show they were no worse
+than roundoff?
+
+If this tag changes climate describe the run(s) done to evaluate the new
+climate in enough detail that it(they) could be reproduced, i.e.,
+- source tag (all code used must be in the repository):
+- platform/compilers:
+- configure commandline:
+- build-namelist command (or complete namelist):
+- MSS location of output:
+
+MSS location of control simulations used to validate new climate:
+
+URL for AMWG diagnostics output used to validate new climate:
+
+===============================================================
+===============================================================
+
+Tag name: cam6_4_057
+Originator(s): brianpm, eaton, nusbaume
+Date: Jan 29 2025
+One-line Summary: Restore spectral scaling to RRTMGP
+Github PR URL: https://github.com/ESCOMP/CAM/pull/1194
+
+Purpose of changes (include the issue number and title text for each relevant GitHub issue):
+
+resolve issue #1193 - Restore spectral scaling to RRTMGP
+
+Describe any changes made to build system: none
+
+Describe any changes made to the namelist: none
+
+List any changes to the defaults for the boundary datasets: none
+
+Describe any substantial timing or memory changes: not evaluated
+
+Code reviewed by: peverwhee
+
+List all files eliminated: none
+
+List all files added and what they do:
+
+src/physics/rrtmgp/rad_solar_var.F90
+. compute scale factors for solar irradiance based on input dataset
+
+List all existing files that have been modified, and describe the changes:
+
+bld/build-namelist
+. change default setting of solar_htng_spctrl_scl to true for rrtmgp
+
+src/physics/rrtmgp/radconstants.F90
+. add module data band2gpt_sw and set using kdist_sw%get_band_lims_gpoint()
+
+src/physics/rrtmgp/radiation.F90
+. radiation_init
+ - add call to rad_solar_var_init
+. radiation_tend
+ - replace code that scales the solar source based on internal RRTMGP
+ spectral distribution by a scaling based on distribution from the
+ solar_irrad_data_file.
+
+If there were any failures reported from running test_driver.sh on any test
+platform, and checkin with these failures has been OK'd by the gatekeeper,
+then copy the lines from the td.*.status files for the failed tests to the
+appropriate machine below. All failed tests must be justified.
+
+derecho/intel/aux_cam:
+
+ERP_D_Ln9.ne30pg3_ne30pg3_mg17.FLTHIST.derecho_intel.cam-outfrq9s (Overall: DIFF)
+ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPLT.derecho_intel.cam-outfrq3s_cosp (Overall: DIFF)
+ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPMT.derecho_intel.cam-outfrq9s (Overall: DIFF)
+ERP_Ld3.ne30pg3_ne30pg3_mg17.FHISTC_MTt4s.derecho_intel.cam-outfrq1d_aoa (Overall: DIFF)
+SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FMTHIST.derecho_intel.cam-outfrq9s (Overall: DIFF)
+SMS_D_Ln9_P1280x1.ne30pg3_ne30pg3_mg17.FHISTC_MTt1s.derecho_intel.cam-outfrq9s_Leung_dust (Overall: DIFF)
+SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp (Overall: DIFF)
+ - expected NLCOMP (solar_htng_spctrl_scl) and baseline answer changes due to restored RRTMGP spectral scaling.
+
+
+ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL)
+SMS_Ld1.f09_f09_mg17.FCHIST_GC.derecho_intel.cam-outfrq1d (Overall: DIFF)
+ - pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856
+
+SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie (Overall: FAIL)
+SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: FAIL)
+ - pre-existing failures due to build-namelist error requiring CLM/CTSM external update
+
+derecho/nvhpc/aux_cam:
+
+ERS_Ln9.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_gpu_default (Overall: FAIL)
+ - pre-existing failure -- issue #1220
+
+izumi/nag/aux_cam: ALL PASS
+
+izumi/gnu/aux_cam:
+
+ERP_D_Ln9.ne3pg3_ne3pg3_mg37.FLTHIST.izumi_gnu.cam-outfrq9s (Overall: DIFF)
+ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPLT.izumi_gnu.cam-outfrq9s (Overall: DIFF)
+ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPMT.izumi_gnu.cam-outfrq9s (Overall: DIFF)
+SMS_Ld5.f09_f09_mg17.PC6.izumi_gnu.cam-cam6_port_f09_rrtmgp (Overall: DIFF)
+ - expected NLCOMP (solar_htng_spctrl_scl) and baseline answer changes due to restored RRTMGP spectral scaling.
+
+CAM tag used for the baseline comparison tests if different than previous
+tag:
+
+Summarize any changes to answers, i.e.,
+- what code configurations:
+- what platforms/compilers:
+- nature of change (roundoff; larger than roundoff but same climate; new
+ climate):
+
+If bitwise differences were observed, how did you show they were no worse
+than roundoff?
+
+If this tag changes climate describe the run(s) done to evaluate the new
+climate in enough detail that it(they) could be reproduced, i.e.,
+- source tag (all code used must be in the repository):
+- platform/compilers:
+- configure commandline:
+- build-namelist command (or complete namelist):
+- MSS location of output:
+
+MSS location of control simulations used to validate new climate:
+
+URL for AMWG diagnostics output used to validate new climate:
+
+===============================================================
+===============================================================
+
+Tag name: cam6_4_056
+Originator(s): fvitt
+Date: 16 Jan 2025
+One-line Summary: Nitrogen depostion fluxes to surface models
+Github PR URL: https://github.com/ESCOMP/CAM/pull/1216
+
+Purpose of changes (include the issue number and title text for each relevant GitHub issue):
+
+ Change logical determinations on how to set nitrogen deposition fluxes which are sent to
+ surface models through the NUOPC mediator. This sets the nitrogen deposition fluxes to
+ prescribed CDEP input stream fluxes if corresponding namelist options are set. Otherwise,
+ the nitrogen deposition fluxes set to chemistry computed fluxes if the chemistry is capable
+ of providing the fluxes. Deprecated ndep_list option in drv_flds_in has been removed.
+ (Github issue #1196)
+
+ Currently there are no SSP scenario type compsets in CESM3 that use CAM atmosphere component.
+ Therefore, the specifications of the NDEP stream files for the SSP compsets are carried forward.
+
+Describe any changes made to build system: N/A
+
+Describe any changes made to the namelist:
+
+ Removed ndep_list drv_flds_in namelist variable
+
+List any changes to the defaults for the boundary datasets: N/A
+
+Describe any substantial timing or memory changes: N/A
+
+Code reviewed by: brian-eaton, cacraigucar
+
+List all files eliminated: N/A
+
+List all files added and what they do: N/A
+
+List all existing files that have been modified, and describe the changes:
+
+M bld/build-namelist
+ - change how default ndep_stream namelist options are set
+ . check if chemistry is capable of producing nitrogen deposition fluxes
+ . set defaults only if not simple physics nor aqua-planet configuration
+ . pass sim_year to add_default to select appriate stream_ndep settings
+
+M bld/namelist_files/namelist_defaults_cam.xml
+ - add default ndep_stream namelist settings
+
+M bld/namelist_files/namelist_definition.xml
+ - remote deprecated ndep_list namelist variable
+ - updates to stream_ndep_* namelist descriptions
+
+M bld/namelist_files/use_cases/1850_cam_lt.xml
+M bld/namelist_files/use_cases/1850_cam_mt.xml
+M bld/namelist_files/use_cases/2010_cam6.xml
+M bld/namelist_files/use_cases/hist_cam_lt.xml
+M bld/namelist_files/use_cases/hist_cam_mt.xml
+M bld/namelist_files/use_cases/sd_cam6.xml
+M bld/namelist_files/use_cases/waccm_sc_1850_cam6.xml
+ - added sim_year
+
+M bld/namelist_files/use_cases/hist_cam6.xml
+ - changed sim_year to "1850-2015"
+
+M bld/namelist_files/use_cases/2010_geoschem.xml
+M bld/namelist_files/use_cases/hist_geoschem.xml
+M bld/namelist_files/use_cases/hist_geoschem_nudged.xml
+ - added sim_year
+ - removed deprecated ndep_list
+
+M bld/namelist_files/use_cases/2000_geoschem.xml
+M bld/namelist_files/use_cases/2000_trop_strat_vbs_cam6.xml
+M bld/namelist_files/use_cases/2010_trop_strat_vbs_cam6.xml
+M bld/namelist_files/use_cases/hist_geoschem.xml
+M bld/namelist_files/use_cases/hist_geoschem_nudged.xml
+M bld/namelist_files/use_cases/hist_trop_strat_nudged_cam6.xml
+M bld/namelist_files/use_cases/hist_trop_strat_vbsext_cam6.xml
+M bld/namelist_files/use_cases/hist_trop_strat_vbsfire_cam6.xml
+M bld/namelist_files/use_cases/sd_trop_strat2_cam6.xml
+M bld/namelist_files/use_cases/sd_trop_strat_vbs_cam6.xml
+M bld/namelist_files/use_cases/sd_waccm_tsmlt_cam6.xml
+M bld/namelist_files/use_cases/waccm_ma_1850_cam6.xml
+M bld/namelist_files/use_cases/waccm_ma_hist_cam6.xml
+M bld/namelist_files/use_cases/waccm_tsmlt_1850_cam6.xml
+M bld/namelist_files/use_cases/waccm_tsmlt_2000_cam6.xml
+M bld/namelist_files/use_cases/waccm_tsmlt_2010_cam6.xml
+M bld/namelist_files/use_cases/waccm_tsmlt_hist_cam6.xml
+ - removed deprecated ndep_list
+
+M cime_config/buildnml
+ - remove the use of CAM_STREAM_NDEP* xml vars to set stream_ndep* namelist options
+
+M cime_config/config_component.xml
+ - remove CAM_STREAM_NDEP* xml vars
+
+M src/chemistry/geoschem/chemistry.F90
+M src/chemistry/pp_none/chemistry.F90
+M src/chemistry/pp_terminator/chemistry.F90
+ - add chem_has_ndep_flx flag -- set to .FALSE. for these chem pckgs
+
+M src/chemistry/mozart/chemistry.F90
+ - add chem_has_ndep_flx flag
+ - add check for prescribed nitrogen depostion fluxes
+
+M src/chemistry/mozart/mo_chm_diags.F90
+ - check for NOy and NHx species in chemistry to determine if
+ chemistry can produce nitrogen deposition fluxes
+
+M src/control/camsrfexch.F90
+ - allocate cam_out nitro dep flx arrays only if not simple phys and not aqua-planet
+
+M src/control/runtime_opts.F90
+ - invoke stream_ndep_readnl sooner in the initialization phase -- from read_namelist
+
+M src/cpl/nuopc/atm_import_export.F90
+ - set out going ndep fluxes only if not simple physics and not aqua-planet
+ - set out going ndep fluxes to prescribed ndep stream fields, otherwise,
+ set chemistry computed fluxes if available.
+
+M src/cpl/nuopc/atm_stream_ndep.F90
+ - add readnl routine -- seperated from init routine which can be invoked from
+ runtime_opts -- earlier in initialization
+ - set default use_ndep_stream flag to .false.
+
+M src/physics/cam/cam_diagnostics.F90
+ - add 'a2x_NOYDEP' and 'a2x_NHXDEP' history fields
+
+M src/utils/srf_field_check.F90
+ - removed active_Faxa_nhx and active_Faxa_noy routine flags which were not useful
+
+If there were any failures reported from running test_driver.sh on any test
+platform, and checkin with these failures has been OK'd by the gatekeeper,
+then copy the lines from the td.*.status files for the failed tests to the
+appropriate machine below. All failed tests must be justified.
+
+derecho/intel/aux_cam:
+
+ FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s
+ DIFF SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h
+ - pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856
+
+ FAIL SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie
+ FAIL SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s
+ - pre-existing failures due to build-namelist error requiring CLM/CTSM external update
+
+ NLFAIL ERC_D_Ln9.f19_f19_mg17.QPC6.derecho_intel.cam-outfrq3s_cosp
+ NLFAIL ERC_D_Ln9.f19_f19_mg17.QPMOZ.derecho_intel.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.f19_f19_mg17.QPX2000.derecho_intel.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.ne16_ne16_mg17.FADIAB.derecho_intel.cam-terminator
+ NLFAIL ERC_D_Ln9.ne16_ne16_mg17.QPC5HIST.derecho_intel.cam-outfrq3s_usecase
+ NLFAIL ERC_D_Ln9_P144x1.ne16pg3_ne16pg3_mg17.QPC6HIST.derecho_intel.cam-outfrq3s_ttrac_usecase
+ NLFAIL ERC_D_Ln9.T42_T42_mg17.FDABIP04.derecho_intel.cam-outfrq3s_usecase
+ NLFAIL ERC_D_Ln9.T42_T42_mg17.FHS94.derecho_intel.cam-outfrq3s_usecase
+ NLFAIL ERI_D_Ln18.f45_f45_mg37.QPC41850.derecho_intel.cam-co2rmp_usecase
+ NLFAIL ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPLT.derecho_intel.cam-outfrq3s_cosp
+ NLFAIL ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPMT.derecho_intel.cam-outfrq9s
+ NLFAIL ERP_D_Ln9_P64x2.f09_f09_mg17.QSC6.derecho_intel.cam-outfrq9s
+ NLFAIL ERS_Ln9.ne0TESTONLYne5x4_ne0TESTONLYne5x4_mg37.FADIAB.derecho_intel.cam-outfrq3s_refined
+ NLFAIL SCT_D_Ln7.ne3_ne3_mg37.QPC5.derecho_intel.cam-scm_prep
+ NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC5.derecho_intel.cam-scm_prep
+ NLFAIL SMS_D_Ld2.f19_f19_mg17.QPC5HIST.derecho_intel.cam-volc_usecase
+ NLFAIL SMS_D_Ln9.f19_f19_mg17.QPC5M7.derecho_intel.cam-outfrq9s
+ NLFAIL SMS_D_Ln9.ne16_ne16_mg17.QPX2000.derecho_intel.cam-outfrq9s
+ - expected namelist compare failures due to removal of stream_ndep namelist opts
+
+ DIFF ERP_Ld3.f09_f09_mg17.FWHIST.derecho_intel.cam-reduced_hist1d
+ DIFF ERP_Ld3.ne30pg3_ne30pg3_mg17.FHISTC_MTt4s.derecho_intel.cam-outfrq1d_aoa
+ DIFF ERP_Lh12.f19_f19_mg17.FW4madSD.derecho_intel.cam-outfrq3h
+ DIFF ERP_Ln9.ne30pg3_ne30pg3_mg17.FCnudged.derecho_intel.cam-outfrq9s
+ DIFF ERP_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s
+ DIFF ERS_Ln9.f09_f09_mg17.FX2000.derecho_intel.cam-outfrq9s
+ DIFF ERS_Ln9.f19_f19_mg17.FXSD.derecho_intel.cam-outfrq9s
+ DIFF SMS_D_Ln9.f09_f09_mg17.FCts2nudged.derecho_intel.cam-outfrq9s_leapday
+ DIFF SMS_D_Ln9.f09_f09_mg17.FCvbsxHIST.derecho_intel.cam-outfrq9s
+ DIFF SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s
+ DIFF SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s_waccm_ma_mam4
+ DIFF SMS_D_Ln9.f19_f19_mg17.QPC2000climo.derecho_intel.cam-outfrq3s_usecase
+ DIFF SMS_D_Ln9.ne16pg3_ne16pg3_mg17.FX2000.derecho_intel.cam-outfrq9s
+ DIFF SMS_D_Ln9_P1280x1.ne30pg3_ne30pg3_mg17.FHISTC_MTt1s.derecho_intel.cam-outfrq9s_Leung_dust
+ DIFF SMS_Ld1.f09_f09_mg17.FCHIST_GC.derecho_intel.cam-outfrq1d
+ DIFF SMS_Ld1.f09_f09_mg17.FW2000climo.derecho_intel.cam-outfrq1d
+ DIFF SMS_Ld1.ne30pg3_ne30pg3_mg17.FC2010climo.derecho_intel.cam-outfrq1d
+ DIFF SMS_Ln9.f09_f09_mg17.FW1850.derecho_intel.cam-reduced_hist3s
+ DIFF SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp
+ - expected differences due to currections to ndep fluxes
+
+derecho/nvhpc/aux_cam:
+
+ FAIL ERS_Ln9.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_gpu_default COMPARE_base_rest
+ - pre-existing failure -- issue #1220
+
+izumi/nag/aux_cam:
+
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-carma_sea_salt
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_cosp
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_subcol
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_am
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_cospsathist
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPWmaC6.izumi_nag.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QSPCAMS.izumi_nag.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.mpasa480z32_mpasa480.FHS94.izumi_nag.cam-outfrq3s_usecase
+ NLFAIL ERC_D_Ln9.ne16_ne16_mg17.QPC4.izumi_nag.cam-outfrq3s_usecase
+ NLFAIL ERC_D_Ln9.ne16pg3_ne16pg3_mg17.QPC4.izumi_nag.cam-outfrq3s_usecase
+ NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-outfrq3s_ttrac
+ NLFAIL ERC_D_Ln9.T5_T5_mg37.QPC4.izumi_nag.cam-outfrq3s_usecase
+ NLFAIL ERI_D_Ln18.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_eoyttrac
+ NLFAIL ERI_D_Ln18.f19_f19_mg17.QPC6.izumi_nag.cam-ghgrmp_e8
+ NLFAIL ERI_D_Ln18.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s_bwic
+ NLFAIL ERI_D_Ln18.ne5pg3_ne5pg3_mg37.FADIAB.izumi_nag.cam-outfrq3s_bwic
+ NLFAIL ERP_Ln9.ne5pg3_ne5pg3_mg37.QPC6.izumi_nag.cam-outfrq9s_clubbmf
+ NLFAIL ERS_Ln27.ne5pg3_ne5pg3_mg37.FKESSLER.izumi_nag.cam-outfrq9s
+ NLFAIL ERS_Ln9.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq9s
+ NLFAIL PEM_D_Ln9.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s
+ NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal0
+ NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal1
+ NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal3
+ NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal0
+ NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal1
+ NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal3
+ NLFAIL SMS_D_Ln3.ne5pg3_ne5pg3_mg37.QPX2000.izumi_nag.cam-outfrq3s
+ NLFAIL SMS_D_Ln6.ne5_ne5_mg37.QPWmaC4.izumi_nag.cam-outfrq3s_physgrid_tem
+ NLFAIL SMS_D_Ln7.T42_T42_mg17.QPSCAMC5.izumi_nag.cam-scmarm
+ NLFAIL SMS_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-rad_diag_mam
+ NLFAIL SMS_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_ba
+ NLFAIL SMS_D_Ln9_P1x1.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s
+ NLFAIL SMS_P48x1_D_Ln3.f09_f09_mg17.QPC6HIST.izumi_nag.cam-outfrq3s_co2cycle_usecase
+ NLFAIL SUB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s
+ NLFAIL TMC_D.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_eoyttrac
+ NLFAIL TMC_D.T5_T5_mg37.QPC5.izumi_nag.cam-ghgrmp_e8
+ - expected namelist compare failures due to removal of stream_ndep namelist opts
+
+izumi/gnu/aux_cam:
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.FADIAB.izumi_gnu.cam-terminator
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC4.izumi_gnu.cam-outfrq3s_diags
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_gnu.cam-outfrq3s_unicon
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_gnu.cam-rad_diag
+ NLFAIL ERC_D_Ln9.f10_f10_mg37.QPSPCAMM.izumi_gnu.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC4.izumi_gnu.cam-outfrq3s_nudging_ne5_L26
+ NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC5.izumi_gnu.cam-outfrq3s_ba
+ NLFAIL ERC_D_Ln9.ne5pg2_ne5pg2_mg37.FADIAB.izumi_gnu.cam-outfrq3s
+ NLFAIL ERC_D_Ln9.ne5pg3_ne5pg3_mg37.FADIAB.izumi_gnu.cam-outfrq3s
+ NLFAIL ERI_D_Ln18.T5_T5_mg37.QPC4.izumi_gnu.cam-co2rmp
+ NLFAIL ERP_D_Ln9.C48_C48_mg17.QPC6.izumi_gnu.cam-outfrq9s
+ NLFAIL ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPLT.izumi_gnu.cam-outfrq9s
+ NLFAIL ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPMT.izumi_gnu.cam-outfrq9s
+ NLFAIL ERP_Ln9.ne5_ne5_mg37.FHS94.izumi_gnu.cam-outfrq9s
+ NLFAIL ERP_Ln9.ne5_ne5_mg37.QPC5.izumi_gnu.cam-outfrq9s
+ NLFAIL ERP_Ln9_P24x2.f45_f45_mg37.QPWmaC6.izumi_gnu.cam-outfrq9s_mee_fluxes
+ NLFAIL PEM_D_Ln9.ne5pg3_ne5pg3_mg37.FADIAB.izumi_gnu.cam-outfrq3s
+ NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal0
+ NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal1
+ NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal3
+ NLFAIL SCT_D_Ln7.ne3_ne3_mg37.QPC6.izumi_gnu.cam-scm_prep_c6
+ NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC4.izumi_gnu.cam-scm_prep
+ NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC6.izumi_gnu.cam-scm_prep_c6
+ NLFAIL SMS_D_Ln3.f10_f10_mg37.QPMOZ.izumi_gnu.cam-outfrq3s_chemproc
+ NLFAIL SMS_D_Ln9.f10_f10_mg37.QPWmaC4.izumi_gnu.cam-outfrq9s_apmee
+ NLFAIL SMS_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-outfrq3s_ttrac
+ - expected namelist compare failures due to removal of stream_ndep namelist opts
+
+ DIFF SMS_P48x1_D_Ln9.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s
+ - expected differences due to currections to ndep fluxes
+
+Summarize any changes to answers: bit-for-bit unchanged
+
+===============================================================
+===============================================================
+
+Tag name: cam6_4_055
+Originator(s): eaton
+Date: 13 January 2025
+One-line Summary: Add QPLT and QPMT compsets, plus misc.
+Github PR URL: https://github.com/ESCOMP/CAM/pull/1203
+
+Purpose of changes (include the issue number and title text for each relevant GitHub issue):
+
+Issue #814 - Introduce QPC7 and possibly QPS7 aquaplanet compsets
+ - Analogous to FLT and FMT compset names, create QPLT and QPMT compsets.
+ - Open new issue to address QPS7.
+ - The new aquaplanet configurations use '-chem none' to eliminate the
+ aerosols. This is much faster and requires much less memory than a
+ configuration that leaves the default chemistry in place and removes
+ aerosols by zeroing the initial concentrations and emission sources.
+
+Issue #1159 - Prealpha tests exceeding wallclock
+ - increased time limit to 20 minutes for these prealpha tests:
+ ERP_Ln9.f09_f09_mg17.FHIST_BGC.derecho_intel.cam-outfrq9s
+ ERP_Ln9.f09_f09_mg17.FHIST.derecho_intel.cam-outfrq9s
+
+Issue #670 - DAE test broken
+ - ChangeLog indicates that this test has never worked since it was added
+ in cam6_2_046 (2020-09-01). Test removed.
+
+Issue #807 - add UT and UQ to cam_diagnostics
+ - Add UT and UQ. Note that other possible fields mentioned in the issue,
+ i.e., OMEGA2, OMEGAQ, OMEGAU, and OMEGAV, are already implemented.
+ OMEGA2 is called OMGAOMGA.
+
+Describe any changes made to build system: none
+
+Describe any changes made to the namelist: none
+
+List any changes to the defaults for the boundary datasets:
+. add spun up initial files for QPLT compset on ne3pg3 and ne30pg3 grids.
+ atm/cam/inic/se/QPLT_L58_ne3pg3_c241127.nc
+ atm/cam/inic/se/QPLT_L58_ne30pg3_c241127.nc
+
+. add spun up initial files for QPMT compset on ne3pg3 and ne30pg3 grids.
+ atm/cam/inic/se/QPMT_L93_ne3pg3_c241223.nc
+ atm/cam/inic/se/QPMT_L93_ne30pg3_c241223.nc
+
+. add ozone dataset for high top aquaplanet runs
+ atm/cam/ozone/aquaplanet_ozone_hightop_c20180412.nc
+
+Describe any substantial timing or memory changes: n/a
+
+Code reviewed by: cacraig
+
+List all files eliminated:
+
+cime_config/testdefs/testmods_dirs/cam/dae/shell_commands
+cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cam
+cime_config/testdefs/testmods_dirs/cam/dae/user_nl_cpl
+test/system/da_cam_no_data_mod.sh
+. DAE test removed
+
+List all files added and what they do: none
+
+List all existing files that have been modified, and describe the changes:
+
+bld/namelist_files/namelist_defaults_cam.xml
+. Remove ncdata files for nlev=58 and nlev=93 aquaplanet. Those files are
+ specified in the aquaplanet_cam7.xml use case file.
+
+bld/namelist_files/use_cases/aquaplanet_cam7.xml
+. use case file for QPLT and QPMT. Same as for QPC6 except:
+ - set f11vmr=f12vmr=0 to override the non-zero default values from
+ namelist_defaults_cam.xml.
+ - set prescribed_aero_file="" and prescribed_aero_specifier="" to
+ override the default bulk aerosol settings from build-namelist.
+ - set rad_climate to just make the GHGs radiatively active to override
+ the default build-namelist setting which includes bulk aerosols.
+ - Add spun-up IC files. This allows us to remove the ic_ymd attribute
+ which should not be needed for aquaplanet runs. Removing ic_ymd
+ enables testing with arbitrary start dates.
+ - Add ozone dataset for high top aquaplanet configuration
+
+cime_config/config_component.xml
+. CAM_CONFIG_OPTS
+ - add match for _CAM70.*_SLND_SICE_DOCN%AQP to set '-chem none'
+. CAM_NML_USE_CASE
+ - add match for 2000_CAM70.*_SLND_SICE_DOCN%AQP to use aquaplanet_cam7.
+ This match will work for both %LT and %MT configs.
+
+cime_config/config_compsets.xml
+. add QPLT = 2000_CAM70%LT_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV
+. add QPMT = 2000_CAM70%MT_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV
+
+cime_config/testdefs/testlist_cam.xml
+. increase time limit to 20 minutes for these prealpha tests:
+ ERP_Ln9.f09_f09_mg17.FHIST_BGC.derecho_intel.cam-outfrq9s
+ ERP_Ln9.f09_f09_mg17.FHIST.derecho_intel.cam-outfrq9s
+. remove non-working DAE test
+. replace ERP_D_Ln9.f19_f19_mg17.QPC6.derecho_intel.cam-outfrq9s
+ by ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPLT.derecho_intel.cam-outfrq3s_cosp
+. Add ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPMT.derecho_intel.cam-outfrq9s
+. replace ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPC6.izumi_gnu.cam-outfrq9s_rrtmgp
+ by ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPLT.izumi_gnu.cam-outfrq9s
+. Add ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPMT.izumi_gnu.cam-outfrq9s
+
+cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/shell_commands
+. remove "./xmlchange CAM_NML_USE_CASE=UNSET"
+
+cime_config/testdefs/testmods_dirs/cam/outfrq3s_cosp/user_nl_cam
+. add CS_SNOWCERT and CS_SNOWPOSS to fexcl1
+
+src/chemistry/mozart/mo_drydep.F90
+. get_landuse_and_soilw_from_file
+ - restrict the INFO messages to only print from masterproc
+
+src/physics/cam/cam_diagnostics.F90
+. diag_init_dry
+ - add addfld call for UT, and corresponding add_default for UT inside the
+ history_eddy conditional.
+. diag_phys_writeout_dry
+ - add calculation and outfld call for UT
+. diag_init_moist
+ - add addfld call for UQ, and corresponding add_default for UQ inside the
+ history_eddy conditional.
+. diag_phys_writeout_moist
+ - add calculation and outfld call for UQ
+
+src/physics/cam/microp_aero.F90
+. microp_aero_run
+ - add condition that number of bulk aerosols must be > 0 before calling
+ ndrop_bam_run.
+
+src/physics/cam/nucleate_ice_cam.F90
+. nucleate_ice_cam_calc
+ - add conditionals so naer2 array not referenced when there are no
+ aerosols.
+
+src/physics/cam/vertical_diffusion.F90
+. vertical_diffusion_init
+ - fix conditional around add_default call for UFLX and VFLX so those
+ fields aren't added if they're not computed.
+
+src/physics/cam7/physpkg.F90
+. tphysbc
+ - add conditionals so modal aerosol calculations only called when modal
+ aerosols are present.
+
+If there were any failures reported from running test_driver.sh on any test
+platform, and checkin with these failures has been OK'd by the gatekeeper,
+then copy the lines from the td.*.status files for the failed tests to the
+appropriate machine below. All failed tests must be justified.
+
+derecho/intel/aux_cam:
+
+ERC_D_Ln9.f19_f19_mg17.QPC6.derecho_intel.cam-outfrq3s_cosp (Overall: DIFF)
+- diffs due to changing the test definition (in outfrq3s_cosp) so that the use case file,
+ aquaplanet_cam6.xml, is no longer ignored. This changes answers.
+
+ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPLT.derecho_intel.cam-outfrq3s_cosp (Overall: DIFF)
+ERP_D_Ln9.ne30pg3_ne30pg3_mg17.QPMT.derecho_intel.cam-outfrq9s (Overall: DIFF)
+- There are no baselines for these new tests.
+
+ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL)
+- pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856
+
+SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie (Overall: FAIL)
+SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: FAIL)
+- pre-existing failures due to build-namelist error requiring CLM/CTSM external update.
+
+derecho/nvhpc/aux_cam:
+
+ERS_Ln9.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_gpu_default (Overall: FAIL)
+- pre-existing failure -- issue #1220
+
+izumi/nag/aux_cam:
+
+ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_cosp (Overall: DIFF) details:
+- diffs due to changing the test definition (in outfrq3s_cosp) so that the use case file,
+ aquaplanet_cam5.xml, is no longer ignored. This changes answers.
+
+izumi/gnu/aux_cam:
+
+ERC_D_Ln9.f10_f10_mg37.QPC4.izumi_gnu.cam-outfrq3s_diags (Overall: DIFF)
+- Diff is due to the new diagnostic fields UT and UQ being included in the
+ test. Otherwise the run is identical with the baseline.
+
+ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPLT.izumi_gnu.cam-outfrq9s (Overall: DIFF)
+ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPMT.izumi_gnu.cam-outfrq9s (Overall: DIFF)
+- There are no baselines for these new tests.
+
+CAM tag used for the baseline comparison tests if different than previous
+tag:
+
+Summarize any changes to answers: BFB. Note however that a change in the
+ test definition for outfrq3s_cosp causes answer changes for tests
+ using that testmod.
+
+===============================================================
+===============================================================
+
Tag name: cam6_4_054
Originator(s): nusbaume
Date: 9 Jan 2025
@@ -366,6 +1039,7 @@ Summarize any changes to answers:
===============================================================
===============================================================
+
Tag name: cam6_4_050
Originator(s): jimmielin
Date: 31 Dec 2024
@@ -679,7 +1353,6 @@ Summarize any changes to answers: none
===============================================================
->>>>>>> upstream/cam_development
Tag name: cam6_4_048
Originator(s): jedwards4b, peverwhee
Date: 20 December 2024
diff --git a/src/chemistry/geoschem/chemistry.F90 b/src/chemistry/geoschem/chemistry.F90
index fbb99e4b8f..e46bda2c4e 100644
--- a/src/chemistry/geoschem/chemistry.F90
+++ b/src/chemistry/geoschem/chemistry.F90
@@ -22,7 +22,7 @@ module chemistry
#if defined( MODAL_AERO )
use modal_aero_data, only : ntot_amode
#endif
-
+
! GEOS-Chem derived types
USE DiagList_Mod, ONLY : DgnList ! Diagnostics list object
use GeosChem_History_Mod, ONLY : HistoryConfigObj ! History diagnostic object
@@ -59,6 +59,7 @@ module chemistry
public :: chem_readnl ! read chem namelist
public :: chem_emissions
public :: chem_timestep_init
+ public :: chem_has_ndep_flx
!
! Private routines:
@@ -166,6 +167,8 @@ module chemistry
! For dry deposition
character(len=shr_kind_cl) :: depvel_lnd_file = 'depvel_lnd_file'
+ ! for nitrogen deposition fluxes to surface models
+ logical, parameter :: chem_has_ndep_flx = .false.
contains
@@ -515,11 +518,11 @@ subroutine chem_register
CALL cnst_get_ind('Q', cQ, abort=.True.)
CALL cnst_get_ind('H2O', cH2O, abort=.True.)
CALL cnst_get_ind('H2SO4', cH2SO4, abort=.True.)
-
+
!------------------------------------------------------------
! Get mapping between dry deposition species and species set
!------------------------------------------------------------
-
+
nIgnored = 0
if (debug .and. masterproc) write(iulog,'(a,i4,a)') 'chem_register: looping over gas dry deposition list with ', nddvels, ' species'
@@ -831,7 +834,7 @@ subroutine chem_readnl(nlfile)
! Now go through the KPP mechanism and add any species not
! implemented by the tracer list in geoschem_config.yml
!----------------------------------------------------------
-
+
IF ( nSpec > nSlsMax ) THEN
CALL ENDRUN('chem_readnl: too many species - increase nSlsmax')
ENDIF
@@ -1022,7 +1025,7 @@ subroutine chem_init(phys_state, pbuf2d)
use Time_Mod, only : Accept_External_Date_Time
use Ucx_Mod, only : Init_Ucx
use Unitconv_Mod, only : MOLES_SPECIES_PER_MOLES_DRY_AIR
- use Vdiff_Mod, only : Max_PblHt_For_Vdiff
+ use Vdiff_Mod, only : Max_PblHt_For_Vdiff
TYPE(physics_state), INTENT(IN ) :: phys_state(BEGCHUNK:ENDCHUNK)
TYPE(physics_buffer_desc), POINTER, INTENT(INOUT) :: pbuf2d(:,:)
@@ -1143,7 +1146,7 @@ subroutine chem_init(phys_state, pbuf2d)
! on State_Grid(BEGCHUNK).
! To go around this, we define all of GEOS-Chem arrays with
! size PCOLS x PVER, which is the largest possible number of
- ! grid cells.
+ ! grid cells.
CALL Init_State_Grid( Input_Opt = Input_Opt, &
State_Grid = maxGrid, &
RC = RC )
@@ -1484,7 +1487,7 @@ subroutine chem_init(phys_state, pbuf2d)
! Init_Drydep
! Thibaud M. Fritz - 04 Mar 2020
!----------------------------------------------------------
-
+
ALLOCATE(map2GC_dryDep(nddvels), STAT=IERR)
IF ( IERR .NE. 0 ) CALL ENDRUN('Failed to allocate map2GC_dryDep')
@@ -1754,7 +1757,7 @@ subroutine chem_timestep_init(phys_state, pbuf2d)
use mo_flbc, only : flbc_chk
use mo_ghg_chem, only : ghg_chem_timestep_init
use physics_buffer, only : physics_buffer_desc
-
+
TYPE(physics_state), INTENT(IN):: phys_state(begchunk:endchunk)
TYPE(physics_buffer_desc), POINTER :: pbuf2d(:,:)
@@ -2019,7 +2022,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dT, pbuf, fh2o )
REAL(r8) :: mmr_tend(state%NCOL,PVER,gas_pcnst)
REAL(r8) :: wk_out(state%NCOL)
LOGICAL :: Found
-
+
CHARACTER(LEN=shr_kind_cl) :: tagName
REAL(r8), PARAMETER :: zlnd = 0.01_r8 ! Roughness length for soil [m]
@@ -2364,7 +2367,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dT, pbuf, fh2o )
ENDDO
! Deal with secondary organic aerosols (SOAs). This mapping is using the
- ! complex SOA option in GEOS-Chem.
+ ! complex SOA option in GEOS-Chem.
! MAM uses five volatility bins spanning saturation concentrations from 0.01
! to 100 ug/m3 (logarithmically). The complex SOA option has four volatility
! bins that 0.1 to 100 ug/m3. We lump the lowest two bins in CESM2 to the
@@ -3692,7 +3695,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dT, pbuf, fh2o )
! Compute the surface flux for the non-local mixing,
! (which means getting emissions & drydep from HEMCO)
! and store it in State_Chm%Surface_Flux
- !
+ !
! For CESM-GC, Surface_Flux will be equal to the opposite of the
! dry deposition flux since emissions are loaded externally
! ( SurfaceFlux = eflx - dflx = - dflx )
@@ -3739,10 +3742,10 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dT, pbuf, fh2o )
! Get the species ID from the drydep ID
N = State_Chm(BEGCHUNK)%Map_DryDep(ND)
IF ( N <= 0 ) CYCLE
-
+
M = map2GCinv(N)
IF ( M <= 0 ) CYCLE
-
+
cam_in%cflx(1:nY,M) = cam_in%cflx(1:nY,M) &
+ State_Chm(LCHNK)%SurfaceFlux(1,1:nY,N)
ENDDO
@@ -3763,7 +3766,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dT, pbuf, fh2o )
new_units = KG_SPECIES_PER_M2, &
previous_units = previous_units, &
RC = RC )
-
+
IF ( RC /= GC_SUCCESS ) THEN
ErrMsg = 'Error encountered in "Convert_Spc_Units"!'
diff --git a/src/chemistry/mozart/chemistry.F90 b/src/chemistry/mozart/chemistry.F90
index 085bd2237b..6527b0ccc1 100644
--- a/src/chemistry/mozart/chemistry.F90
+++ b/src/chemistry/mozart/chemistry.F90
@@ -24,6 +24,7 @@ module chemistry
use ref_pres, only : ptop_ref
use phys_control, only : waccmx_is ! WACCM-X switch query function
use phys_control, only : use_hemco ! HEMCO switch logical
+ use mo_chm_diags, only : chem_has_ndep_flx => chm_prod_ndep_flx
implicit none
private
@@ -46,6 +47,7 @@ module chemistry
public :: chem_read_restart
public :: chem_init_restart
public :: chem_emissions
+ public :: chem_has_ndep_flx
integer, public :: imozart = -1 ! index of 1st constituent
@@ -1147,6 +1149,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o)
use mo_neu_wetdep, only : neu_wetdep_tend
use aerodep_flx, only : aerodep_flx_prescribed
use short_lived_species, only : short_lived_species_writeic
+ use atm_stream_ndep, only : ndep_stream_active
implicit none
@@ -1265,11 +1268,13 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o)
cam_out%precc, cam_out%precl, cam_in%snowhland, ghg_chem, state%latmapback, &
drydepflx, wetdepflx, cam_in%cflx, cam_in%fireflx, cam_in%fireztop, &
nhx_nitrogen_flx, noy_nitrogen_flx, use_hemco, ptend%q, pbuf )
- if (associated(cam_out%nhx_nitrogen_flx)) then
- cam_out%nhx_nitrogen_flx(:ncol) = nhx_nitrogen_flx(:ncol)
- endif
- if (associated(cam_out%noy_nitrogen_flx)) then
- cam_out%noy_nitrogen_flx(:ncol) = noy_nitrogen_flx(:ncol)
+ if (.not.ndep_stream_active) then
+ if (associated(cam_out%nhx_nitrogen_flx)) then
+ cam_out%nhx_nitrogen_flx(:ncol) = nhx_nitrogen_flx(:ncol)
+ endif
+ if (associated(cam_out%noy_nitrogen_flx)) then
+ cam_out%noy_nitrogen_flx(:ncol) = noy_nitrogen_flx(:ncol)
+ endif
endif
call t_stopf( 'chemdr' )
diff --git a/src/chemistry/mozart/mo_chm_diags.F90 b/src/chemistry/mozart/mo_chm_diags.F90
index 5650403fee..1a11b2b39d 100644
--- a/src/chemistry/mozart/mo_chm_diags.F90
+++ b/src/chemistry/mozart/mo_chm_diags.F90
@@ -18,6 +18,7 @@ module mo_chm_diags
public :: chm_diags_inti
public :: chm_diags
public :: het_diags
+ public :: chm_prod_ndep_flx
integer :: id_n,id_no,id_no2,id_no3,id_n2o5,id_hno3,id_ho2no2,id_clono2,id_brono2
integer :: id_isopfdn, id_isopfdnc, id_terpfdn !these are dinitrates
@@ -55,6 +56,8 @@ module mo_chm_diags
real(r8), parameter :: N_molwgt = 14.00674_r8
real(r8), parameter :: S_molwgt = 32.066_r8
+ logical, protected :: chm_prod_ndep_flx =.false.
+
contains
subroutine chm_diags_inti
@@ -330,6 +333,8 @@ subroutine chm_diags_inti
toth_species = (/ id_ch4, id_h2o, id_h2 /)
+ chm_prod_ndep_flx = any(noy_species>0) .or. any(nhx_species>0)
+
call addfld( 'NOX', (/ 'lev' /), 'A', 'mol/mol', 'nox (N+NO+NO2)' )
call addfld( 'NOY', (/ 'lev' /), 'A', 'mol/mol', &
'noy = total nitrogen (N+NO+NO2+NO3+2N2O5+HNO3+HO2NO2+ORGNOY+NH4NO3)' )
diff --git a/src/chemistry/mozart/mo_drydep.F90 b/src/chemistry/mozart/mo_drydep.F90
index 06b87797c4..12e1d3e0a9 100644
--- a/src/chemistry/mozart/mo_drydep.F90
+++ b/src/chemistry/mozart/mo_drydep.F90
@@ -520,11 +520,13 @@ subroutine get_landuse_and_soilw_from_file()
logical :: lexist
if (len_trim(drydep_srf_file) == 0) then
- write(iulog,*)'**************************************'
- write(iulog,*)' get_landuse_and_soilw_from_file: INFO:'
- write(iulog,*)' drydep_srf_file not set:'
- write(iulog,*)' setting fraction_landuse to zero'
- write(iulog,*)'**************************************'
+ if (masterproc) then
+ write(iulog,*)'**************************************'
+ write(iulog,*)' get_landuse_and_soilw_from_file: INFO:'
+ write(iulog,*)' drydep_srf_file not set:'
+ write(iulog,*)' setting fraction_landuse to zero'
+ write(iulog,*)'**************************************'
+ end if
fraction_landuse = 0._r8
return
end if
@@ -536,12 +538,14 @@ subroutine get_landuse_and_soilw_from_file()
call infld('fraction_landuse', piofile, 'ncol','class',1,pcols,1,n_land_type, begchunk,endchunk, &
fraction_landuse, readvar, gridname='physgrid')
if (.not. readvar) then
- write(iulog,*)'**************************************'
- write(iulog,*)'get_landuse_and_soilw_from_file: INFO:'
- write(iulog,*)' fraction_landuse not read from file: '
- write(iulog,*)' ', trim(locfn)
- write(iulog,*)' setting all values to zero'
- write(iulog,*)'**************************************'
+ if (masterproc) then
+ write(iulog,*)'**************************************'
+ write(iulog,*)'get_landuse_and_soilw_from_file: INFO:'
+ write(iulog,*)' fraction_landuse not read from file: '
+ write(iulog,*)' ', trim(locfn)
+ write(iulog,*)' setting all values to zero'
+ write(iulog,*)'**************************************'
+ end if
fraction_landuse = 0._r8
end if
diff --git a/src/chemistry/pp_none/chemistry.F90 b/src/chemistry/pp_none/chemistry.F90
index 7e67fadb6e..9da9aa0852 100644
--- a/src/chemistry/pp_none/chemistry.F90
+++ b/src/chemistry/pp_none/chemistry.F90
@@ -7,7 +7,7 @@ module chemistry
use shr_kind_mod, only: r8 => shr_kind_r8
use physics_types, only: physics_state, physics_ptend
use ppgrid, only: begchunk, endchunk, pcols
-
+
implicit none
private
@@ -27,9 +27,10 @@ module chemistry
public :: chem_write_restart
public :: chem_read_restart
public :: chem_init_restart
- public :: chem_readnl ! read chem namelist
+ public :: chem_readnl ! read chem namelist
public :: chem_reset_fluxes
public :: chem_emissions
+ public :: chem_has_ndep_flx
interface chem_write_restart
module procedure chem_write_restart_bin
@@ -40,6 +41,8 @@ module chemistry
module procedure chem_read_restart_pio
end interface
+ logical, parameter :: chem_has_ndep_flx = .false.
+
! Private data
!================================================================================================
@@ -61,10 +64,10 @@ end function chem_is
subroutine chem_register
use aero_model, only : aero_model_register
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: register advected constituents for parameterized greenhouse gas chemistry
- !
+ !
!-----------------------------------------------------------------------
! for prescribed aerosols
@@ -95,12 +98,12 @@ end function chem_is_active
!================================================================================================
function chem_implements_cnst(name)
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: return true if specified constituent is implemented by this package
- !
+ !
! Author: B. Eaton
- !
+ !
!-----------------------------------------------------------------------
implicit none
!-----------------------------Arguments---------------------------------
@@ -115,11 +118,11 @@ end function chem_implements_cnst
!===============================================================================
subroutine chem_init(phys_state, pbuf2d)
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: initialize parameterized greenhouse gas chemistry
! (declare history variables)
- !
+ !
!-----------------------------------------------------------------------
use physics_buffer, only : physics_buffer_desc
use aero_model, only : aero_model_init
@@ -138,7 +141,7 @@ subroutine chem_timestep_init(phys_state, pbuf2d)
use physics_buffer, only : physics_buffer_desc
use time_manager, only: get_curr_date, get_perp_date, get_curr_calday, &
is_perpetual
- type(physics_state), intent(in):: phys_state(begchunk:endchunk)
+ type(physics_state), intent(in):: phys_state(begchunk:endchunk)
type(physics_buffer_desc), pointer :: pbuf2d(:,:)
@@ -162,7 +165,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o)
type(cam_out_t), intent(in) :: cam_out
type(physics_buffer_desc), pointer :: pbuf(:)
real(r8), optional, intent(out) :: fh2o(pcols) ! h2o flux to balance source from chemistry
-
+
return
end subroutine chem_timestep_tend
@@ -215,7 +218,7 @@ subroutine chem_init_restart(File)
end subroutine chem_init_restart
!================================================================================
subroutine chem_reset_fluxes( fptr, cam_in )
- use camsrfexch, only : cam_in_t
+ use camsrfexch, only : cam_in_t
real(r8), pointer :: fptr(:,:) ! pointer into array data
type(cam_in_t), intent(inout) :: cam_in(begchunk:endchunk)
@@ -223,7 +226,7 @@ subroutine chem_reset_fluxes( fptr, cam_in )
end subroutine chem_reset_fluxes
!================================================================================
subroutine chem_emissions( state, cam_in, pbuf )
- use camsrfexch, only: cam_in_t
+ use camsrfexch, only: cam_in_t
use physics_buffer, only: physics_buffer_desc
! Arguments:
diff --git a/src/chemistry/pp_terminator/chemistry.F90 b/src/chemistry/pp_terminator/chemistry.F90
index 11fbf5e0c9..b1e82d8d65 100644
--- a/src/chemistry/pp_terminator/chemistry.F90
+++ b/src/chemistry/pp_terminator/chemistry.F90
@@ -32,9 +32,10 @@ module chemistry
public :: chem_write_restart
public :: chem_read_restart
public :: chem_init_restart
- public :: chem_readnl ! read chem namelist
+ public :: chem_readnl ! read chem namelist
public :: chem_reset_fluxes
public :: chem_emissions
+ public :: chem_has_ndep_flx
interface chem_write_restart
module procedure chem_write_restart_bin
@@ -45,9 +46,11 @@ module chemistry
module procedure chem_read_restart_pio
end interface
+ logical, parameter :: chem_has_ndep_flx = .false.
+
! Private data
integer, parameter :: nspecies = 3
-
+
integer :: idx_cl =-1
integer :: idx_cl2=-1
@@ -75,10 +78,10 @@ end function chem_is
!================================================================================================
subroutine chem_register
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: register advected constituents for parameterized greenhouse gas chemistry
- !
+ !
!-----------------------------------------------------------------------
real(r8), parameter :: cptmp = 666._r8
@@ -86,10 +89,10 @@ subroutine chem_register
logical :: camout
integer :: i, n
-
+
do i = 1, nspecies
camout = trim(species(i)) .eq. 'RHO'
- call cnst_add( species(i), adv_mass(i), cptmp, qmin, n, &
+ call cnst_add( species(i), adv_mass(i), cptmp, qmin, n, &
readiv=.true.,mixtype='dry',cam_outfld=camout)
indices(i) = n
map2chm(n) = i
@@ -123,12 +126,12 @@ end function chem_is_active
!================================================================================================
function chem_implements_cnst(name)
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: return true if specified constituent is implemented by this package
- !
+ !
! Author: B. Eaton
- !
+ !
!-----------------------------------------------------------------------
implicit none
!-----------------------------Arguments---------------------------------
@@ -137,7 +140,7 @@ function chem_implements_cnst(name)
logical :: chem_implements_cnst ! return value
integer :: i
-
+
chem_implements_cnst = .false.
do i = 1, nspecies
@@ -150,13 +153,13 @@ function chem_implements_cnst(name)
end function chem_implements_cnst
!===============================================================================
-
+
subroutine chem_init(phys_state, pbuf2d)
- !-----------------------------------------------------------------------
- !
+ !-----------------------------------------------------------------------
+ !
! Purpose: initialize parameterized greenhouse gas chemistry
! (declare history variables)
- !
+ !
!-----------------------------------------------------------------------
use physics_buffer, only: physics_buffer_desc
use cam_history, only: addfld, add_default, horiz_only
@@ -196,7 +199,7 @@ end subroutine chem_init
subroutine chem_timestep_init(phys_state, pbuf2d)
use physics_buffer, only: physics_buffer_desc
- type(physics_state), intent(in):: phys_state(begchunk:endchunk)
+ type(physics_state), intent(in):: phys_state(begchunk:endchunk)
type(physics_buffer_desc), pointer :: pbuf2d(:,:)
end subroutine chem_timestep_init
@@ -222,7 +225,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o )
real(r8), optional, intent(out) :: fh2o(pcols) ! h2o flux to balance source from chemistry
real(r8) :: a(pver),b(pver),c(pver),d(pver)
-
+
real(r8) :: k1(pcols)
real(r8) :: k2(pcols)
@@ -278,7 +281,7 @@ subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o )
l(i,:) = (1._r8 - e(i,:))/det(i,:)/dt
elsewhere
l(i,:) = 4._r8*k2(i)
- endwhere
+ endwhere
cl_f(i,:) = -l(i,:)*(cl(i,:) - det(i,:) + r(i) )*(cl(i,:) + det(i,:) + r(i)) / ( 1._r8 +e(i,:) + dt*l(i,:)*(cl(i,:) + r(i)))
cl2_f(i,:) = -cl_f(i,:) / 2._r8
@@ -325,7 +328,7 @@ subroutine chem_init_cnst(name, latvals, lonvals, mask, q)
real(r8) :: q_vmr(size(q, 1)) ! volume mixing ratio (ncol)
real(r8) :: det(size(q, 1))
real(r8) :: krat(size(q, 1))
-
+
real(r8) :: k1(size(q, 1))
real(r8) :: k2(size(q, 1))
@@ -347,7 +350,7 @@ subroutine chem_init_cnst(name, latvals, lonvals, mask, q)
krat(:) = k1(:) / (4._r8 * k2(:))
h = init_vmr_cl + 2._r8 * init_vmr_cl2
-
+
det(:) = sqrt(krat(:) * krat(:) + 2._r8 * h * krat(:))
if (trim(name) == trim(species(1)) ) then
@@ -412,7 +415,7 @@ subroutine chem_init_restart(File)
end subroutine chem_init_restart
!================================================================================
subroutine chem_reset_fluxes( fptr, cam_in )
- use camsrfexch, only : cam_in_t
+ use camsrfexch, only : cam_in_t
real(r8), pointer :: fptr(:,:) ! pointer into array data
type(cam_in_t), intent(inout) :: cam_in(begchunk:endchunk)
@@ -420,7 +423,7 @@ subroutine chem_reset_fluxes( fptr, cam_in )
end subroutine chem_reset_fluxes
!================================================================================
subroutine chem_emissions( state, cam_in, pbuf )
- use camsrfexch, only: cam_in_t
+ use camsrfexch, only: cam_in_t
use physics_buffer, only: physics_buffer_desc
! Arguments:
diff --git a/src/control/camsrfexch.F90 b/src/control/camsrfexch.F90
index 0357ba3128..1470c46198 100644
--- a/src/control/camsrfexch.F90
+++ b/src/control/camsrfexch.F90
@@ -13,10 +13,8 @@ module camsrfexch
use cam_abortutils, only: endrun
use cam_logfile, only: iulog
use srf_field_check, only: active_Sl_ram1, active_Sl_fv, active_Sl_soilw, &
- active_Fall_flxdst1, active_Fall_flxvoc, active_Fall_flxfire, &
- active_Faxa_nhx, active_Faxa_noy
-
-
+ active_Fall_flxdst1, active_Fall_flxvoc, active_Fall_flxfire
+ use cam_control_mod, only: aqua_planet, simple_phys
implicit none
private
@@ -100,7 +98,7 @@ module camsrfexch
real(r8) :: tref(pcols) ! ref height surface air temp
real(r8) :: qref(pcols) ! ref height specific humidity
real(r8) :: u10(pcols) ! 10m wind speed
- real(r8) :: ugustOut(pcols) ! gustiness added
+ real(r8) :: ugustOut(pcols) ! gustiness added
real(r8) :: u10withGusts(pcols) ! 10m wind speed with gusts added
real(r8) :: ts(pcols) ! merged surface temp
real(r8) :: sst(pcols) ! sea surface temp
@@ -325,14 +323,20 @@ subroutine atm2hub_alloc( cam_out )
cam_out(c)%dstwet4(:) = 0._r8
nullify(cam_out(c)%nhx_nitrogen_flx)
- allocate (cam_out(c)%nhx_nitrogen_flx(pcols), stat=ierror)
- if ( ierror /= 0 ) call endrun(sub//': allocation error nhx_nitrogen_flx')
- cam_out(c)%nhx_nitrogen_flx(:) = 0._r8
-
nullify(cam_out(c)%noy_nitrogen_flx)
- allocate (cam_out(c)%noy_nitrogen_flx(pcols), stat=ierror)
- if ( ierror /= 0 ) call endrun(sub//': allocation error noy_nitrogen_flx')
- cam_out(c)%noy_nitrogen_flx(:) = 0._r8
+
+ if (.not.(simple_phys .or. aqua_planet)) then
+
+ allocate (cam_out(c)%nhx_nitrogen_flx(pcols), stat=ierror)
+ if ( ierror /= 0 ) call endrun(sub//': allocation error nhx_nitrogen_flx')
+ cam_out(c)%nhx_nitrogen_flx(:) = 0._r8
+
+ allocate (cam_out(c)%noy_nitrogen_flx(pcols), stat=ierror)
+ if ( ierror /= 0 ) call endrun(sub//': allocation error noy_nitrogen_flx')
+ cam_out(c)%noy_nitrogen_flx(:) = 0._r8
+
+ endif
+
end do
end subroutine atm2hub_alloc
diff --git a/src/control/runtime_opts.F90 b/src/control/runtime_opts.F90
index ee1b785d87..b6f391664d 100644
--- a/src/control/runtime_opts.F90
+++ b/src/control/runtime_opts.F90
@@ -102,6 +102,7 @@ subroutine read_namelist(nlfilename, single_column, scmlat, scmlon)
use cam_budget, only: cam_budget_readnl
use phys_grid_ctem, only: phys_grid_ctem_readnl
use mo_lightning, only: lightning_readnl
+ use atm_stream_ndep, only: stream_ndep_readnl
!---------------------------Arguments-----------------------------------
@@ -205,6 +206,7 @@ subroutine read_namelist(nlfilename, single_column, scmlat, scmlon)
call hemco_readnl(nlfilename)
call cam_budget_readnl(nlfilename)
call phys_grid_ctem_readnl(nlfilename)
+ call stream_ndep_readnl(nlfilename)
end subroutine read_namelist
diff --git a/src/cpl/nuopc/atm_import_export.F90 b/src/cpl/nuopc/atm_import_export.F90
index b3e16bee8c..c5ad5c253d 100644
--- a/src/cpl/nuopc/atm_import_export.F90
+++ b/src/cpl/nuopc/atm_import_export.F90
@@ -22,10 +22,10 @@ module atm_import_export
use srf_field_check , only : set_active_Fall_flxfire
use srf_field_check , only : set_active_Fall_fco2_lnd
use srf_field_check , only : set_active_Faoo_fco2_ocn
- use srf_field_check , only : set_active_Faxa_nhx
- use srf_field_check , only : set_active_Faxa_noy
- use srf_field_check , only : active_Faxa_nhx, active_Faxa_noy
- use atm_stream_ndep , only : stream_ndep_init, stream_ndep_interp, stream_ndep_is_initialized, use_ndep_stream
+ use atm_stream_ndep , only : stream_ndep_init, stream_ndep_interp, stream_ndep_is_initialized
+ use atm_stream_ndep , only : ndep_stream_active
+ use chemistry , only : chem_has_ndep_flx
+ use cam_control_mod , only : aqua_planet, simple_phys
implicit none
private ! except
@@ -60,7 +60,6 @@ module atm_import_export
integer :: drydep_nflds = -huge(1) ! number of dry deposition velocity fields lnd-> atm
integer :: megan_nflds = -huge(1) ! number of MEGAN voc fields from lnd-> atm
integer :: emis_nflds = -huge(1) ! number of fire emission fields from lnd-> atm
- integer, public :: ndep_nflds = -huge(1) ! number of nitrogen deposition fields from atm->lnd/ocn
logical :: atm_provides_lightning = .false. ! cld to grnd lightning flash freq (min-1)
character(*),parameter :: F01 = "('(cam_import_export) ',a,i8,2x,i8,2x,d21.14)"
character(*),parameter :: F02 = "('(cam_import_export) ',a,i8,2x,i8,2x,i8,2x,d21.14)"
@@ -79,13 +78,11 @@ subroutine read_surface_fields_namelists()
use shr_megan_mod , only : shr_megan_readnl
use shr_fire_emis_mod , only : shr_fire_emis_readnl
use shr_carma_mod , only : shr_carma_readnl
- use shr_ndep_mod , only : shr_ndep_readnl
use shr_lightning_coupling_mod, only : shr_lightning_coupling_readnl
character(len=*), parameter :: nl_file_name = 'drv_flds_in'
! read mediator fields options
- call shr_ndep_readnl(nl_file_name, ndep_nflds)
call shr_drydep_readnl(nl_file_name, drydep_nflds)
call shr_megan_readnl(nl_file_name, megan_nflds)
call shr_fire_emis_readnl(nl_file_name, emis_nflds)
@@ -194,16 +191,7 @@ subroutine advertise_fields(gcomp, flds_scalar_name, rc)
call fldlist_add(fldsFrAtm_num, fldsFrAtm, 'Sa_co2diag' )
end if
- if (ndep_nflds > 0) then
- ! The following is when CAM/WACCM computes ndep
- call set_active_Faxa_nhx(.true.)
- call set_active_Faxa_noy(.true.)
- else
- ! The following is used for reading in stream data, or for aquaplanet or simple model
- ! cases where the ndep fluxes are not used.
- call set_active_Faxa_nhx(.false.)
- call set_active_Faxa_noy(.false.)
- end if
+ ! Nitrogen deposition fluxes
! Assume that 2 fields are always sent as part of Faxa_ndep
call fldlist_add(fldsFrAtm_num, fldsFrAtm, 'Faxa_ndep', ungridded_lbound=1, ungridded_ubound=2)
@@ -935,7 +923,6 @@ subroutine export_fields( gcomp, model_mesh, model_clock, cam_out, rc)
integer :: ncols ! Number of columns
integer :: nstep
logical :: exists
- real(r8) :: scale_ndep
! 2d pointers
real(r8), pointer :: fldptr_ndep(:,:)
real(r8), pointer :: fldptr_bcph(:,:) , fldptr_ocph(:,:)
@@ -1121,10 +1108,10 @@ subroutine export_fields( gcomp, model_mesh, model_clock, cam_out, rc)
call state_getfldptr(exportState, 'Faxa_ndep', fldptr2d=fldptr_ndep, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- if (.not. active_Faxa_nhx .and. .not. active_Faxa_noy) then
- ! ndep fields not active (i.e., not computed by WACCM). Either they are not needed,
- ! or they are obtained from the ndep input stream.
+ fldptr_ndep(:,:) = 0._r8
+
+ if (.not. (simple_phys .or. aqua_planet)) then
! The ndep_stream_nl namelist group is read in stream_ndep_init. This sets whether
! or not the stream will be used.
@@ -1134,45 +1121,31 @@ subroutine export_fields( gcomp, model_mesh, model_clock, cam_out, rc)
stream_ndep_is_initialized = .true.
end if
- if (use_ndep_stream) then
+ if (ndep_stream_active.or.chem_has_ndep_flx) then
- ! get ndep fluxes from the stream
- call stream_ndep_interp(cam_out, rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- ! NDEP read from forcing is expected to be in units of gN/m2/sec - but the mediator
- ! expects units of kgN/m2/sec
- scale_ndep = .001_r8
+ ! Nitrogen dep fluxes are obtained from the ndep input stream if input data is available
+ ! otherwise computed by chemistry
+ if (ndep_stream_active) then
- else
+ ! get ndep fluxes from the stream
+ call stream_ndep_interp(cam_out, rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+
+ end if
- ! ndep fluxes not used. Set to zero.
+ g = 1
do c = begchunk,endchunk
do i = 1,get_ncols_p(c)
- cam_out(c)%nhx_nitrogen_flx(i) = 0._r8
- cam_out(c)%noy_nitrogen_flx(i) = 0._r8
+ fldptr_ndep(1,g) = cam_out(c)%nhx_nitrogen_flx(i) * mod2med_areacor(g)
+ fldptr_ndep(2,g) = cam_out(c)%noy_nitrogen_flx(i) * mod2med_areacor(g)
+ g = g + 1
end do
end do
- scale_ndep = 1._r8
-
- end if
-
- else
- ! If waccm computes ndep, then its in units of kgN/m2/s - and the mediator expects
- ! units of kgN/m2/sec, so the following conversion needs to happen
- scale_ndep = 1._r8
+ end if
end if
- g = 1
- do c = begchunk,endchunk
- do i = 1,get_ncols_p(c)
- fldptr_ndep(1,g) = cam_out(c)%nhx_nitrogen_flx(i) * scale_ndep * mod2med_areacor(g)
- fldptr_ndep(2,g) = cam_out(c)%noy_nitrogen_flx(i) * scale_ndep * mod2med_areacor(g)
- g = g + 1
- end do
- end do
-
end subroutine export_fields
!===============================================================================
diff --git a/src/cpl/nuopc/atm_stream_ndep.F90 b/src/cpl/nuopc/atm_stream_ndep.F90
index a393b27f05..f54509b269 100644
--- a/src/cpl/nuopc/atm_stream_ndep.F90
+++ b/src/cpl/nuopc/atm_stream_ndep.F90
@@ -21,52 +21,46 @@ module atm_stream_ndep
implicit none
private
+ public :: stream_ndep_readnl ! read runtime options
public :: stream_ndep_init ! position datasets for dynamic ndep
public :: stream_ndep_interp ! interpolates between two years of ndep file data
private :: stream_ndep_check_units ! Check the units and make sure they can be used
! The ndep stream is not needed for aquaplanet or simple model configurations. It
- ! is disabled by setting the namelist variable stream_ndep_data_filename to blank.
- logical, public, protected :: use_ndep_stream = .true.
+ ! is disabled by setting the namelist variable stream_ndep_data_filename to 'UNSET' or empty string.
+ logical, public, protected :: ndep_stream_active = .false.
type(shr_strdata_type) :: sdat_ndep ! input data stream
logical, public :: stream_ndep_is_initialized = .false.
character(len=CS) :: stream_varlist_ndep(2)
type(ESMF_Clock) :: model_clock
- character(len=*), parameter :: sourcefile = &
- __FILE__
+ character(len=*), parameter :: sourcefile = __FILE__
+
+ character(len=CL) :: stream_ndep_data_filename
+ character(len=CL) :: stream_ndep_mesh_filename
+ integer :: stream_ndep_year_first ! first year in stream to use
+ integer :: stream_ndep_year_last ! last year in stream to use
+ integer :: stream_ndep_year_align ! align stream_year_firstndep with
!==============================================================================
contains
!==============================================================================
- subroutine stream_ndep_init(model_mesh, model_clock, rc)
- !
- ! Initialize data stream information.
+ subroutine stream_ndep_readnl(nlfile)
! Uses:
- use cam_instance , only: inst_suffix
- use shr_nl_mod , only: shr_nl_find_group_name
- use dshr_strdata_mod , only: shr_strdata_init_from_inline
+ use shr_nl_mod, only: shr_nl_find_group_name
! input/output variables
- type(ESMF_CLock), intent(in) :: model_clock
- type(ESMF_Mesh) , intent(in) :: model_mesh
- integer , intent(out) :: rc
+ character(len=*), intent(in) :: nlfile
! local variables
integer :: nu_nml ! unit for namelist file
integer :: nml_error ! namelist i/o error flag
- character(len=CL) :: stream_ndep_data_filename
- character(len=CL) :: stream_ndep_mesh_filename
- character(len=CL) :: filein ! atm namelist file
- integer :: stream_ndep_year_first ! first year in stream to use
- integer :: stream_ndep_year_last ! last year in stream to use
- integer :: stream_ndep_year_align ! align stream_year_firstndep with
integer :: ierr
- character(*), parameter :: subName = "('stream_ndep_init')"
+ character(*), parameter :: subName = "('stream_ndep_readnl')"
!-----------------------------------------------------------------------
namelist /ndep_stream_nl/ &
@@ -76,8 +70,6 @@ subroutine stream_ndep_init(model_mesh, model_clock, rc)
stream_ndep_year_last, &
stream_ndep_year_align
- rc = ESMF_SUCCESS
-
! Default values for namelist
stream_ndep_data_filename = ' '
stream_ndep_mesh_filename = ' '
@@ -90,10 +82,9 @@ subroutine stream_ndep_init(model_mesh, model_clock, rc)
! Read ndep_stream namelist
if (masterproc) then
- filein = "atm_in" // trim(inst_suffix)
- open( newunit=nu_nml, file=trim(filein), status='old', iostat=nml_error )
+ open( newunit=nu_nml, file=trim(nlfile), status='old', iostat=nml_error )
if (nml_error /= 0) then
- call endrun(subName//': ERROR opening '//trim(filein)//errMsg(sourcefile, __LINE__))
+ call endrun(subName//': ERROR opening '//trim(nlfile)//errMsg(sourcefile, __LINE__))
end if
call shr_nl_find_group_name(nu_nml, 'ndep_stream_nl', status=nml_error)
if (nml_error == 0) then
@@ -101,8 +92,6 @@ subroutine stream_ndep_init(model_mesh, model_clock, rc)
if (nml_error /= 0) then
call endrun(' ERROR reading ndep_stream_nl namelist'//errMsg(sourcefile, __LINE__))
end if
- else
- call endrun(' ERROR finding ndep_stream_nl namelist'//errMsg(sourcefile, __LINE__))
end if
close(nu_nml)
endif
@@ -117,9 +106,10 @@ subroutine stream_ndep_init(model_mesh, model_clock, rc)
call mpi_bcast(stream_ndep_year_align, 1, mpi_integer, 0, mpicom, ierr)
if (ierr /= 0) call endrun(trim(subname)//": FATAL: mpi_bcast: stream_ndep_year_align")
+ ndep_stream_active = len_trim(stream_ndep_data_filename)>0 .and. stream_ndep_data_filename/='UNSET'
+
! Check whether the stream is being used.
- if (stream_ndep_data_filename == ' '.or.stream_ndep_data_filename == 'UNSET') then
- use_ndep_stream = .false.
+ if (.not.ndep_stream_active) then
if (masterproc) then
write(iulog,'(a)') ' '
write(iulog,'(a)') 'NDEP STREAM IS NOT USED.'
@@ -140,6 +130,25 @@ subroutine stream_ndep_init(model_mesh, model_clock, rc)
write(iulog,'(a)' ) ' '
endif
+ end subroutine stream_ndep_readnl
+
+ subroutine stream_ndep_init(model_mesh, model_clock, rc)
+ use dshr_strdata_mod, only: shr_strdata_init_from_inline
+
+ ! input/output variables
+ type(ESMF_CLock), intent(in) :: model_clock
+ type(ESMF_Mesh) , intent(in) :: model_mesh
+ integer , intent(out) :: rc
+
+ ! local variables
+ character(*), parameter :: subName = "('stream_ndep_init')"
+
+ rc = ESMF_SUCCESS
+ if (.not.ndep_stream_active) then
+ return
+ end if
+ !
+ ! Initialize data stream information.
! Read in units
call stream_ndep_check_units(stream_ndep_data_filename)
@@ -237,6 +246,11 @@ subroutine stream_ndep_interp(cam_out, rc)
integer :: mcdate ! Current model date (yyyymmdd)
real(r8), pointer :: dataptr1d_nhx(:)
real(r8), pointer :: dataptr1d_noy(:)
+
+ ! NDEP read from forcing is expected to be in units of gN/m2/sec - but the mediator
+ ! expects units of kgN/m2/sec
+ real(r8), parameter :: scale_ndep = .001_r8
+
!-----------------------------------------------------------------------
! Advance sdat stream
@@ -260,8 +274,8 @@ subroutine stream_ndep_interp(cam_out, rc)
g = 1
do c = begchunk,endchunk
do i = 1,get_ncols_p(c)
- cam_out(c)%nhx_nitrogen_flx(i) = dataptr1d_nhx(g)
- cam_out(c)%noy_nitrogen_flx(i) = dataptr1d_noy(g)
+ cam_out(c)%nhx_nitrogen_flx(i) = dataptr1d_nhx(g) * scale_ndep
+ cam_out(c)%noy_nitrogen_flx(i) = dataptr1d_noy(g) * scale_ndep
g = g + 1
end do
end do
diff --git a/src/physics/cam/cam_diagnostics.F90 b/src/physics/cam/cam_diagnostics.F90
index 082a2df9d8..3d5e6f8b84 100644
--- a/src/physics/cam/cam_diagnostics.F90
+++ b/src/physics/cam/cam_diagnostics.F90
@@ -253,6 +253,7 @@ subroutine diag_init_dry(pbuf2d)
call addfld ('OMEGAV', (/ 'lev' /), 'A', 'm Pa/s2 ', 'Vertical flux of meridional momentum' )
call addfld ('OMGAOMGA', (/ 'lev' /), 'A', 'Pa2/s2', 'Vertical flux of vertical momentum' )
+ call addfld ('UT', (/ 'lev' /), 'A', 'K m/s ', 'Zonal heat transport')
call addfld ('UU', (/ 'lev' /), 'A', 'm2/s2', 'Zonal velocity squared' )
call addfld ('WSPEED', (/ 'lev' /), 'X', 'm/s', 'Horizontal total wind speed maximum' )
call addfld ('WSPDSRFMX', horiz_only, 'X', 'm/s', 'Horizontal total wind speed maximum at surface layer midpoint' )
@@ -339,6 +340,7 @@ subroutine diag_init_dry(pbuf2d)
call add_default ('VT ', 1, ' ')
call add_default ('VU ', 1, ' ')
call add_default ('VV ', 1, ' ')
+ call add_default ('UT ', 1, ' ')
call add_default ('UU ', 1, ' ')
call add_default ('OMEGAT ', 1, ' ')
call add_default ('OMEGAU ', 1, ' ')
@@ -438,6 +440,7 @@ subroutine diag_init_moist(pbuf2d)
! outfld calls in diag_phys_writeout
call addfld ('OMEGAQ', (/ 'lev' /), 'A', 'kgPa/kgs', 'Vertical water transport' )
+ call addfld ('UQ', (/ 'lev' /), 'A', 'm/skg/kg', 'Zonal water transport')
call addfld ('VQ', (/ 'lev' /), 'A', 'm/skg/kg', 'Meridional water transport')
call addfld ('QQ', (/ 'lev' /), 'A', 'kg2/kg2', 'Eddy moisture variance')
@@ -568,6 +571,9 @@ subroutine diag_init_moist(pbuf2d)
call addfld('a2x_DSTWET4', horiz_only, 'A', 'kg/m2/s', 'wetdep of dust (bin4)')
call addfld('a2x_DSTDRY4', horiz_only, 'A', 'kg/m2/s', 'drydep of dust (bin4)')
+ call addfld('a2x_NOYDEP', horiz_only, 'A', 'kgN/m2/s', 'NOy Deposition Flux')
+ call addfld('a2x_NHXDEP', horiz_only, 'A', 'kgN/m2/s', 'NHx Deposition Flux')
+
! defaults
if (history_amwg) then
call add_default (cnst_name(1), 1, ' ')
@@ -611,6 +617,7 @@ subroutine diag_init_moist(pbuf2d)
end if
if (history_eddy) then
+ call add_default ('UQ ', 1, ' ')
call add_default ('VQ ', 1, ' ')
endif
@@ -1017,6 +1024,9 @@ subroutine diag_phys_writeout_dry(state, pbuf, p_surf_t)
!
! zonal advection
!
+ ftem(:ncol,:) = state%u(:ncol,:)*state%t(:ncol,:)
+ call outfld ('UT ',ftem ,pcols ,lchnk )
+
ftem(:ncol,:) = state%u(:ncol,:)**2
call outfld ('UU ',ftem ,pcols ,lchnk )
@@ -1281,9 +1291,10 @@ subroutine diag_phys_writeout_moist(state, pbuf, p_surf_t)
call outfld('PDELDRY', state%pdeldry, pcols, lchnk)
call outfld('PDEL', state%pdel, pcols, lchnk)
- !
- ! Meridional advection fields
- !
+
+ ftem(:ncol,:) = state%u(:ncol,:)*state%q(:ncol,:,ixq)
+ call outfld ('UQ ',ftem ,pcols ,lchnk )
+
ftem(:ncol,:) = state%v(:ncol,:)*state%q(:ncol,:,ixq)
call outfld ('VQ ',ftem ,pcols ,lchnk )
diff --git a/src/physics/cam/cam_snapshot.F90 b/src/physics/cam/cam_snapshot.F90
index 7e7d83e9ef..da79aeb517 100644
--- a/src/physics/cam/cam_snapshot.F90
+++ b/src/physics/cam/cam_snapshot.F90
@@ -115,18 +115,53 @@ subroutine cam_snapshot_all_outfld_tphysbc(file_num, state, tend, cam_in, cam_ou
lchnk = state%lchnk
+ call cam_history_snapshot_activate('tphysbc_flx_heat', file_num)
call outfld('tphysbc_flx_heat', flx_heat, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_flx_heat')
+
+ call cam_history_snapshot_activate('tphysbc_cmfmc', file_num)
call outfld('tphysbc_cmfmc', cmfmc, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_cmfmc')
+
+ call cam_history_snapshot_activate('tphysbc_cmfcme', file_num)
call outfld('tphysbc_cmfcme', cmfcme, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_cmfcme')
+
+ call cam_history_snapshot_activate('tphysbc_zdu', file_num)
call outfld('tphysbc_zdu', zdu, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_zdu')
+
+ call cam_history_snapshot_activate('tphysbc_rliq', file_num)
call outfld('tphysbc_rliq', rliq, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_rliq')
+
+ call cam_history_snapshot_activate('tphysbc_rice', file_num)
call outfld('tphysbc_rice', rice, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_rice')
+
+ call cam_history_snapshot_activate('tphysbc_dlf', file_num)
call outfld('tphysbc_dlf', dlf, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_dlf')
+
+ call cam_history_snapshot_activate('tphysbc_dlf2', file_num)
call outfld('tphysbc_dlf2', dlf2, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_dlf2')
+
+ call cam_history_snapshot_activate('tphysbc_rliq2', file_num)
call outfld('tphysbc_rliq2', rliq2, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_rliq2')
+
+ call cam_history_snapshot_activate('tphysbc_det_s', file_num)
call outfld('tphysbc_det_s', det_s, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_det_s')
+
+ call cam_history_snapshot_activate('tphysbc_det_ice', file_num)
call outfld('tphysbc_det_ice', det_ice, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_det_ice')
+
+ call cam_history_snapshot_activate('tphysbc_net_flx', file_num)
call outfld('tphysbc_net_flx', net_flx, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysbc_net_flx')
call cam_snapshot_all_outfld(file_num, state, tend, cam_in, cam_out, pbuf)
@@ -163,10 +198,22 @@ subroutine cam_snapshot_all_outfld_tphysac(file_num, state, tend, cam_in, cam_ou
lchnk = state%lchnk
+ call cam_history_snapshot_activate('tphysac_fh2o', file_num)
call outfld('tphysac_fh2o', fh2o, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysac_fh2o')
+
+ call cam_history_snapshot_activate('tphysac_surfric', file_num)
call outfld('tphysac_surfric', surfric, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysac_surfric')
+
+ call cam_history_snapshot_activate('tphysac_obklen', file_num)
call outfld('tphysac_obklen', obklen, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysac_obklen')
+
+ call cam_history_snapshot_activate('tphysac_flx_heat', file_num)
call outfld('tphysac_flx_heat', flx_heat, pcols, lchnk)
+ call cam_history_snapshot_deactivate('tphysac_flx_heat')
+
call cam_snapshot_all_outfld(file_num, state, tend, cam_in, cam_out, pbuf)
diff --git a/src/physics/cam/clubb_intr.F90 b/src/physics/cam/clubb_intr.F90
index a9f25f0256..705afefba5 100644
--- a/src/physics/cam/clubb_intr.F90
+++ b/src/physics/cam/clubb_intr.F90
@@ -4700,8 +4700,8 @@ subroutine clubb_tend_cam( state, ptend_all, pbuf, hdtime, &
! --------------------------------------------------------------------------------- !
do i=1,ncol
do k=1,pver
- !use local exner since state%exner is not a proper exner
- th(i,k) = state1%t(i,k)*inv_exner_clubb(i,k)
+ !subroutine pblind expects "Stull" definition of Exner
+ th(i,k) = state1%t(i,k)*state1%exner(i,k)
!thv should have condensate loading to be consistent with earlier def's in this module
thv(i,k) = th(i,k)*(1.0_r8+zvir*state1%q(i,k,ixq) - state1%q(i,k,ixcldliq))
enddo
diff --git a/src/physics/cam/microp_aero.F90 b/src/physics/cam/microp_aero.F90
index 51303e1830..38079466af 100644
--- a/src/physics/cam/microp_aero.F90
+++ b/src/physics/cam/microp_aero.F90
@@ -756,7 +756,7 @@ subroutine microp_aero_run ( &
do k = top_lev, pver
do i = 1, ncol
- if (state1%q(i,k,cldliq_idx) >= qsmall) then
+ if (naer_all > 0 .and. state1%q(i,k,cldliq_idx) >= qsmall) then
! get droplet activation rate
diff --git a/src/physics/cam/nucleate_ice_cam.F90 b/src/physics/cam/nucleate_ice_cam.F90
index 41cea58b38..bd0a8b6636 100644
--- a/src/physics/cam/nucleate_ice_cam.F90
+++ b/src/physics/cam/nucleate_ice_cam.F90
@@ -607,12 +607,18 @@ subroutine nucleate_ice_cam_calc( &
else
! for bulk model
- dust_num_col(:ncol,:) = naer2(:ncol,:,idxdst1)/25._r8 * per_cm3 & ! #/cm3
- + naer2(:ncol,:,idxdst2)/25._r8 * per_cm3 &
- + naer2(:ncol,:,idxdst3)/25._r8 * per_cm3 &
- + naer2(:ncol,:,idxdst4)/25._r8 * per_cm3
- sulf_num_col(:ncol,:) = naer2(:ncol,:,idxsul)/25._r8 * per_cm3
- soot_num_col(:ncol,:) = naer2(:ncol,:,idxbcphi)/25._r8 * per_cm3
+ if (idxdst1 > 0 .and. idxdst2 > 0 .and. idxdst3 > 0 .and. idxdst4 > 0) then
+ dust_num_col(:ncol,:) = naer2(:ncol,:,idxdst1)/25._r8 * per_cm3 & ! #/cm3
+ + naer2(:ncol,:,idxdst2)/25._r8 * per_cm3 &
+ + naer2(:ncol,:,idxdst3)/25._r8 * per_cm3 &
+ + naer2(:ncol,:,idxdst4)/25._r8 * per_cm3
+ end if
+ if (idxsul > 0) then
+ sulf_num_col(:ncol,:) = naer2(:ncol,:,idxsul)/25._r8 * per_cm3
+ end if
+ if (idxbcphi > 0) then
+ soot_num_col(:ncol,:) = naer2(:ncol,:,idxbcphi)/25._r8 * per_cm3
+ end if
endif
kloop: do k = top_lev, pver
diff --git a/src/physics/cam/physpkg.F90 b/src/physics/cam/physpkg.F90
index e89e6fbc87..c19831919b 100644
--- a/src/physics/cam/physpkg.F90
+++ b/src/physics/cam/physpkg.F90
@@ -2001,6 +2001,14 @@ subroutine tphysac (ztodt, cam_in, &
call clybry_fam_set( ncol, lchnk, map2chm, state%q, pbuf )
+ ! output these here -- after updates by chem_timestep_tend or export_fields within the current time step
+ if (associated(cam_out%nhx_nitrogen_flx)) then
+ call outfld('a2x_NHXDEP', cam_out%nhx_nitrogen_flx, pcols, lchnk)
+ end if
+ if (associated(cam_out%noy_nitrogen_flx)) then
+ call outfld('a2x_NOYDEP', cam_out%noy_nitrogen_flx, pcols, lchnk)
+ end if
+
end subroutine tphysac
subroutine tphysbc (ztodt, state, &
diff --git a/src/physics/cam/vertical_diffusion.F90 b/src/physics/cam/vertical_diffusion.F90
index 472b2a5501..e2d571a4de 100644
--- a/src/physics/cam/vertical_diffusion.F90
+++ b/src/physics/cam/vertical_diffusion.F90
@@ -619,8 +619,10 @@ subroutine vertical_diffusion_init(pbuf2d)
endif
if (history_eddy) then
- call add_default( 'UFLX ', 1, ' ' )
- call add_default( 'VFLX ', 1, ' ' )
+ if (.not. do_pbl_diags) then
+ call add_default( 'UFLX ', 1, ' ' )
+ call add_default( 'VFLX ', 1, ' ' )
+ end if
endif
if( history_budget ) then
diff --git a/src/physics/cam7/physpkg.F90 b/src/physics/cam7/physpkg.F90
index 2b932e6807..bbe67894ef 100644
--- a/src/physics/cam7/physpkg.F90
+++ b/src/physics/cam7/physpkg.F90
@@ -2482,6 +2482,14 @@ subroutine tphysac (ztodt, cam_in, &
call clybry_fam_set( ncol, lchnk, map2chm, state%q, pbuf )
+ ! output these here -- after updates by chem_timestep_tend or export_fields within the current time step
+ if (associated(cam_out%nhx_nitrogen_flx)) then
+ call outfld('a2x_NHXDEP', cam_out%nhx_nitrogen_flx, pcols, lchnk)
+ end if
+ if (associated(cam_out%noy_nitrogen_flx)) then
+ call outfld('a2x_NOYDEP', cam_out%noy_nitrogen_flx, pcols, lchnk)
+ end if
+
end subroutine tphysac
subroutine tphysbc (ztodt, state, &
@@ -2894,8 +2902,10 @@ subroutine tphysbc (ztodt, state, &
! Run wet deposition routines to intialize aerosols
!===================================================
- call modal_aero_calcsize_diag(state, pbuf)
- call modal_aero_wateruptake_dr(state, pbuf)
+ if (clim_modal_aero) then
+ call modal_aero_calcsize_diag(state, pbuf)
+ call modal_aero_wateruptake_dr(state, pbuf)
+ end if
!===================================================
! Radiation computations
diff --git a/src/physics/rrtmgp/rad_solar_var.F90 b/src/physics/rrtmgp/rad_solar_var.F90
new file mode 100644
index 0000000000..ab608db7f9
--- /dev/null
+++ b/src/physics/rrtmgp/rad_solar_var.F90
@@ -0,0 +1,149 @@
+!-------------------------------------------------------------------------------
+! This module uses the solar irradiance data
+! to provide a spectral scaling factor
+! to approximate the spectral distribution of irradiance
+! when the radiation scheme might use a different solar source function
+!-------------------------------------------------------------------------------
+module rad_solar_var
+
+ use shr_kind_mod , only : r8 => shr_kind_r8
+ use radconstants, only : nswbands, get_sw_spectral_boundaries, band2gpt_sw
+ use solar_irrad_data, only : sol_irrad, we, nbins, has_spectrum, sol_tsi
+ use solar_irrad_data, only : do_spctrl_scaling
+ use cam_abortutils, only : endrun
+ use error_messages, only : alloc_err
+
+ implicit none
+ save
+
+ private
+ public :: rad_solar_var_init
+ public :: get_variability
+
+ real(r8), allocatable :: irrad(:) ! solar irradiance at model timestep in each band
+
+ real(r8), allocatable :: radbinmax(:)
+ real(r8), allocatable :: radbinmin(:)
+
+!-------------------------------------------------------------------------------
+contains
+!-------------------------------------------------------------------------------
+
+ subroutine rad_solar_var_init( )
+
+ integer :: ierr
+ integer :: radmax_loc
+
+ if ( do_spctrl_scaling ) then
+
+ if ( .not.has_spectrum ) then
+ call endrun('rad_solar_var_init: solar input file must have irradiance spectrum')
+ endif
+
+ allocate (radbinmax(nswbands),stat=ierr)
+ if (ierr /= 0) then
+ call endrun('rad_solar_var_init: Error allocating space for radbinmax')
+ end if
+
+ allocate (radbinmin(nswbands),stat=ierr)
+ if (ierr /= 0) then
+ call endrun('rad_solar_var_init: Error allocating space for radbinmin')
+ end if
+
+ allocate (irrad(nswbands), stat=ierr)
+ if (ierr /= 0) then
+ call endrun('rad_solar_var_init: Error allocating space for irrad')
+ end if
+
+ call get_sw_spectral_boundaries(radbinmin, radbinmax, 'nm')
+
+ ! Make sure that the far-IR is included, even if radiation grid does not
+ ! extend that far down. 10^5 nm corresponds to a wavenumber of
+ ! 100 cm^-1.
+ radmax_loc = maxloc(radbinmax,1)
+ radbinmax(radmax_loc) = max(100000._r8,radbinmax(radmax_loc))
+
+ endif
+
+ end subroutine rad_solar_var_init
+
+!-------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
+
+ subroutine get_variability(toa_flux, sfac)
+
+ ! Arguments
+ real(r8), intent(in) :: toa_flux(:,:) ! TOA flux to be scaled (columns,gpts)
+ real(r8), intent(out) :: sfac(:,:) ! scaling factors (columns,gpts)
+
+ ! Local variables
+ integer :: i, j, istat, gpt_start, gpt_end, ncols
+ real(r8), allocatable :: scale(:)
+ character(len=*), parameter :: sub = 'get_variability'
+
+ if (do_spctrl_scaling) then
+
+ ! Determine target irradiance for each band
+ call integrate_spectrum(nbins, nswbands, we, radbinmin, radbinmax, sol_irrad, irrad)
+
+ ncols = size(toa_flux, 1)
+ allocate(scale(ncols), stat=istat)
+ call alloc_err(istat, sub, 'scale', ncols)
+
+ do i = 1, nswbands
+ gpt_start = band2gpt_sw(1,i)
+ gpt_end = band2gpt_sw(2,i)
+ scale = spread(irrad(i), 1, ncols) / sum(toa_flux(:, gpt_start:gpt_end), dim=2)
+ do j = gpt_start, gpt_end
+ sfac(:,j) = scale
+ end do
+ end do
+
+ else
+ sfac(:,:) = sol_tsi / spread(sum(toa_flux, 2), 2, size(toa_flux, 2))
+ end if
+ end subroutine get_variability
+
+
+!-------------------------------------------------------------------------------
+! private method.........
+!-------------------------------------------------------------------------------
+
+ subroutine integrate_spectrum( nsrc, ntrg, src_x, min_trg, max_trg, src, trg )
+
+ use mo_util, only : rebin
+
+ implicit none
+
+ !---------------------------------------------------------------
+ ! ... dummy arguments
+ !---------------------------------------------------------------
+ integer, intent(in) :: nsrc ! dimension source array
+ integer, intent(in) :: ntrg ! dimension target array
+ real(r8), intent(in) :: src_x(nsrc+1) ! source coordinates
+ real(r8), intent(in) :: max_trg(ntrg) ! target coordinates
+ real(r8), intent(in) :: min_trg(ntrg) ! target coordinates
+ real(r8), intent(in) :: src(nsrc) ! source array
+ real(r8), intent(out) :: trg(ntrg) ! target array
+
+ !---------------------------------------------------------------
+ ! ... local variables
+ !---------------------------------------------------------------
+ real(r8) :: trg_x(2), targ(1) ! target coordinates
+ integer :: i
+
+ do i = 1, ntrg
+
+ trg_x(1) = min_trg(i)
+ trg_x(2) = max_trg(i)
+
+ call rebin( nsrc, 1, src_x, trg_x, src(1:nsrc), targ(:) )
+ ! W/m2/nm --> W/m2
+ trg( i ) = targ(1)*(trg_x(2)-trg_x(1))
+
+ enddo
+
+
+ end subroutine integrate_spectrum
+
+end module rad_solar_var
diff --git a/src/physics/rrtmgp/radconstants.F90 b/src/physics/rrtmgp/radconstants.F90
index f490b81b7b..3d4b47d09e 100644
--- a/src/physics/rrtmgp/radconstants.F90
+++ b/src/physics/rrtmgp/radconstants.F90
@@ -26,6 +26,9 @@ module radconstants
logical :: wavenumber_boundaries_set = .false.
+! First and last g-point for each band.
+integer, public, protected :: band2gpt_sw(2,nswbands)
+
integer, public, protected :: nswgpts ! number of SW g-points
integer, public, protected :: nlwgpts ! number of LW g-points
@@ -104,6 +107,9 @@ subroutine set_wavenumber_bands(kdist_sw, kdist_lw)
wavenumber_low_shortwave = values(1,:)
wavenumber_high_shortwave = values(2,:)
+ ! First and last g-point for each SW band:
+ band2gpt_sw = kdist_sw%get_band_lims_gpoint()
+
! Indices into specific bands
idx_sw_diag = get_band_index_by_value('sw', 500.0_r8, 'nm')
idx_nir_diag = get_band_index_by_value('sw', 1000.0_r8, 'nm')
diff --git a/src/physics/rrtmgp/radiation.F90 b/src/physics/rrtmgp/radiation.F90
index bb1667b0ec..58a973a3f0 100644
--- a/src/physics/rrtmgp/radiation.F90
+++ b/src/physics/rrtmgp/radiation.F90
@@ -16,7 +16,6 @@ module radiation
pbuf_set_field, pbuf_get_field, pbuf_old_tim_idx
use camsrfexch, only: cam_out_t, cam_in_t
use physconst, only: cappa, cpair, gravit
-use solar_irrad_data, only: sol_tsi
use time_manager, only: get_nstep, is_first_step, is_first_restart_step, &
get_curr_calday, get_step_size
@@ -27,6 +26,7 @@ module radiation
use radconstants, only: nradgas, gasnamelength, gaslist, nswbands, nlwbands, &
nswgpts, set_wavenumber_bands
+use rad_solar_var, only: rad_solar_var_init, get_variability
use cloud_rad_props, only: cloud_rad_props_init
@@ -495,6 +495,7 @@ subroutine radiation_init(pbuf2d)
! Set the sw/lw band boundaries in radconstants. Also sets
! indicies of specific bands for diagnostic output and COSP input.
call set_wavenumber_bands(kdist_sw, kdist_lw)
+ call rad_solar_var_init()
! The spectral band boundaries need to be set before this init is called.
call rrtmgp_inputs_init(ktopcam, ktoprad)
@@ -937,8 +938,8 @@ subroutine radiation_tend( &
! TOA solar flux on RRTMGP g-points
real(r8), allocatable :: toa_flux(:,:)
- ! TSI from RRTMGP data (from sum over g-point representation)
- real(r8) :: tsi_ref
+ ! Scale factors based on spectral distribution from input irradiance dataset
+ real(r8), allocatable :: sfac(:,:)
! Planck sources for LW.
type(ty_source_func_lw) :: sources_lw
@@ -1097,6 +1098,7 @@ subroutine radiation_tend( &
allocate( &
t_sfc(ncol), emis_sfc(nlwbands,ncol), toa_flux(nday,nswgpts), &
+ sfac(nday,nswgpts), &
t_rad(ncol,nlay), pmid_rad(ncol,nlay), pint_rad(ncol,nlay+1), &
t_day(nday,nlay), pmid_day(nday,nlay), pint_day(nday,nlay+1), &
coszrs_day(nday), alb_dir(nswbands,nday), alb_dif(nswbands,nday), &
@@ -1174,8 +1176,8 @@ subroutine radiation_tend( &
call stop_on_err(errmsg, sub, 'kdist_sw%gas_optics')
! Scale the solar source
- tsi_ref = sum(toa_flux(1,:))
- toa_flux = toa_flux * sol_tsi * eccf / tsi_ref
+ call get_variability(toa_flux, sfac)
+ toa_flux = toa_flux * sfac * eccf
end if
@@ -1303,7 +1305,7 @@ subroutine radiation_tend( &
end if ! if (dolw)
deallocate( &
- t_sfc, emis_sfc, toa_flux, t_rad, pmid_rad, pint_rad, &
+ t_sfc, emis_sfc, toa_flux, sfac, t_rad, pmid_rad, pint_rad, &
t_day, pmid_day, pint_day, coszrs_day, alb_dir, alb_dif)
!================!
diff --git a/src/utils/srf_field_check.F90 b/src/utils/srf_field_check.F90
index d1c0adfbca..97d210bb5e 100644
--- a/src/utils/srf_field_check.F90
+++ b/src/utils/srf_field_check.F90
@@ -17,10 +17,6 @@ module srf_field_check
logical, public, protected :: active_Fall_fco2_lnd = .false.
logical, public, protected :: active_Faoo_fco2_ocn = .false.
- ! output from atm
- logical, public, protected :: active_Faxa_nhx = .false.
- logical, public, protected :: active_Faxa_noy = .false.
-
public :: set_active_Sl_ram1
public :: set_active_Sl_fv
public :: set_active_Sl_soilw
@@ -29,8 +25,6 @@ module srf_field_check
public :: set_active_Fall_flxfire
public :: set_active_Fall_fco2_lnd
public :: set_active_Faoo_fco2_ocn
- public :: set_active_Faxa_nhx
- public :: set_active_Faxa_noy
!===============================================================================
contains
@@ -76,14 +70,4 @@ subroutine set_active_Faoo_fco2_ocn(is_active)
active_Faoo_fco2_ocn = is_active
end subroutine set_active_Faoo_fco2_ocn
- subroutine set_active_Faxa_nhx(is_active)
- logical, intent(in) :: is_active
- active_Faxa_nhx = is_active
- end subroutine set_active_Faxa_nhx
-
- subroutine set_active_Faxa_noy(is_active)
- logical, intent(in) :: is_active
- active_Faxa_noy = is_active
- end subroutine set_active_Faxa_noy
-
end module srf_field_check
diff --git a/test/system/da_cam_no_data_mod.sh b/test/system/da_cam_no_data_mod.sh
deleted file mode 100755
index ef5313d4cc..0000000000
--- a/test/system/da_cam_no_data_mod.sh
+++ /dev/null
@@ -1,95 +0,0 @@
-#! /bin/bash
-
-##############################################################################
-###
-### A stub data assimilation script that prints out information but makes
-### no modifications to model data.
-### Script checks for proper pre and post data assimilation output
-### Tests using this script should be BFB with a non-data assimilation run
-###
-##############################################################################
-
-errcode=0
-if [ $# -ne 2 ]; then
- echo "ERROR: Wrong number of arguments, $# (should be 2)"
- errcode=$(( errcode + 1 ))
-else
- caseroot=$1
- cycle=$2
- echo "caseroot: ${caseroot}"
- echo "cycle: ${cycle}"
- cd ${caseroot}
- res=$?
- if [ $res -ne 0 ]; then
- echo "ERROR: Unable to cd to caseroot, ${caseroot}"
- errcode=$(( errcode + 1 ))
- else
- ./xmlchange DATA_ASSIMILATION_ATM=TRUE
- res=$?
- if [ $res -ne 0 ]; then
- echo "ERROR: Unable to change DATA_ASSIMILATION_ATM to TRUE"
- errcode=$(( errcode + 1 ))
- fi
- rundir="`./xmlquery --value RUNDIR`"
- ninst=`./xmlquery --value NINST_ATM`
- if [ -n "${rundir}" -a -d "${rundir}" ]; then
- cd ${rundir}
- res=$?
- if [ $res -ne 0 ]; then
- echo "ERROR: Unable to cd to rundir, ${rundir}"
- errcode=$(( errcode + 1 ))
- else
- # Check the latest log file for a resume signal
- if [ $ninst -eq 1 ]; then
- lfiles="`ls -t atm.log.* 2> /dev/null | head -1`"
- else
- # Multi-instance, look for wav_nnnn.log*
- for inst in `seq 1 $ninst`; do
- ifilename="`printf "atm_%04d.log.*" $inst`"
- ifile="`ls -t ${ifilename} 2> /dev/null | head -1`"
- if [ -z "${ifile}" ]; then
- echo "No log files for instance $ninst found"
- errcode=$(( errcode + 1 ))
- elif [ -z "${lfiles}" ]; then
- lfiles="${ifile}"
- else
- lfiles="${lfiles} ${ifile}"
- fi
- done
- fi
- if [ -z "${lfiles}" ]; then
- echo "ERROR: Unable to find atm log file in `pwd -P`"
- errcode=$(( errcode + 1 ))
- else
- for atmfile in ${lfiles}; do
- dasig="`zgrep '^[ ]*DART run using CAM initial mode$' ${atmfile} 2> /dev/null`"
- initsig="`zgrep '^[ ]*Initial run$' ${atmfile} 2> /dev/null`"
- if [ $cycle -gt 0 ]; then
- if [ -n "${dasig}" ]; then
- echo "Post-DA resume signal found for cycle ${cycle}"
- else
- echo "No post-DA resume signal for cycle ${cycle}"
- fi
- elif [ -n "${dasig}" ]; then
- echo "Bad Post-DA resume signal found for cycle ${cycle}"
- fi
- if [ $cycle -eq 0 ]; then
- if [ -n "${initsig}" ]; then
- echo "Initial run signal found for cycle ${cycle}"
- else
- echo "No initial run signal found for cycle ${cycle}"
- fi
- elif [ -n "${initsig}" ]; then
- echo "Bad initial run signal found for cycle ${cycle}"
- fi
- done
- fi
- fi
- else
- echo "ERROR: RUNDIR (${rundir}) is not a valid directory"
- errcode=$(( errcode + 1 ))
- fi
- fi
-fi
-
-exit $errcode