diff --git a/cime_config/stream_cdeps.py b/cime_config/stream_cdeps.py
index 1f702a13..b7af2f28 100644
--- a/cime_config/stream_cdeps.py
+++ b/cime_config/stream_cdeps.py
@@ -76,6 +76,7 @@ def create_stream_xml(
data_list_file,
user_mods_file,
available_neon_data=None,
+ available_plumber_data=None
):
"""
Create the stream xml file and append the required stream input data to the input data list file
@@ -187,7 +188,17 @@ def create_stream_xml(
{"name": "NEON.NEON_PRECIP.$NEONSITE"},
err_msg="No stream_entry {} found".format(stream_name),
)
+ elif stream_name.startswith("PLUMBER2"):
+ self.stream_nodes = super(StreamCDEPS, self).get_child(
+ "stream_entry",
+ {"name": "PLUMBER2.$PLUMBER2SITE"},
+ err_msg="No stream_entry {} found".format(stream_name),
+ )
elif stream_name.startswith("CLM_USRDAT."):
+ if 'PLUMBER2' in stream_name:
+ # if PLUMBER2 is in the stream name
+ # we want to use PLUMBER2.PLUMBER2SITE instead of CLM_USRDAT.PLUMBER2
+ continue
self.stream_nodes = super(StreamCDEPS, self).get_child(
"stream_entry",
{"name": "CLM_USRDAT.$CLM_USRDAT_NAME"},
@@ -244,6 +255,13 @@ def create_stream_xml(
os.path.join(rundir, "inputdata", "atm", neon)
+ "\n"
)
+ elif available_plumber_data and stream_name.startswith("PLUMBER2"):
+ rundir = case.get_value("RUNDIR")
+ for plumber in available_plumber_data:
+ stream_datafiles += (
+ os.path.join(rundir, "inputdata", "atm", plumber)
+ + "\n"
+ )
else:
stream_datafiles = child.xml_element.text
stream_datafiles = self._resolve_values(
diff --git a/cime_config/stream_definition_v2.0.xsd b/cime_config/stream_definition_v2.0.xsd
index de3189e3..d6ec7476 100644
--- a/cime_config/stream_definition_v2.0.xsd
+++ b/cime_config/stream_definition_v2.0.xsd
@@ -93,7 +93,8 @@
-
+
+
diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml
index afee5034..28e341c0 100755
--- a/datm/cime_config/buildnml
+++ b/datm/cime_config/buildnml
@@ -141,11 +141,16 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path
available_neon_data = None
if 'CLM_USRDAT' in model_grid:
config['model_grid'] = 'CLM_USRDAT'
- neonsite = case.get_value("NEONSITE")
- if neonsite:
- config['neon'] = "True"
- # download and use the listing.csv file to determine data availablity
- available_neon_data = _get_neon_data_availability(case, neonsite)
+ if 'NEON' in clm_usrdat_name:
+ neonsite = case.get_value("NEONSITE")
+ if neonsite:
+ config['neon'] = "True"
+ # download and use the listing.csv file to determine data availablity
+ available_neon_data = _get_neon_data_availability(case, neonsite)
+ if 'PLUMBER2' in clm_usrdat_name:
+ plumber2site = case.get_value('PLUMBER2SITE')
+ if plumber2site:
+ config['plumber'] = "True"
else:
config['model_grid'] = model_grid
@@ -194,6 +199,8 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path
streamlist.append(clm_usrdat_name+"_PRECIP."+neonsite)
if clm_usrdat_name == 'NEON':
streamlist.append(clm_usrdat_name+".NEON_PRECIP."+neonsite)
+ if clm_usrdat_name == 'PLUMBER2':
+ streamlist.append(clm_usrdat_name+"."+plumber2site)
bias_correct = nmlgen.get_value("bias_correct")
if bias_correct is not None:
diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml
index e0a04797..f2698e9d 100644
--- a/datm/cime_config/config_component.xml
+++ b/datm/cime_config/config_component.xml
@@ -296,6 +296,15 @@
starting year to loop data over
+
+ integer
+
+ 9999
+ run_component_datm
+ env_run.xml
+ Start year listed in PLUMBER2 filenames for certain datm_modes. Currently only used in PLUMBER2; leave as the default value (9999) for other cases.
+
+
integer
diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml
index 491b6f6d..3c2be399 100644
--- a/datm/cime_config/namelist_definition_datm.xml
+++ b/datm/cime_config/namelist_definition_datm.xml
@@ -40,6 +40,9 @@
NEON.$NEONSITE
+
+ PLUMBER2.$PLUMBER2SITE
+
CLM_USRDAT.$CLM_USRDAT_NAME
diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml
index 7f38beda..bfe6fc4a 100644
--- a/datm/cime_config/stream_definition_datm.xml
+++ b/datm/cime_config/stream_definition_datm.xml
@@ -41,6 +41,8 @@
CORE_RYF9091_JRA = JRA55 repeat year forcing, v1.3, 1990-1991 (for forcing POP and CICE)
CORE_RYF0304_JRA = JRA55 repeat year forcing, v1.3, 2003-2004 (for forcing POP and CICE)
ERA5 = ERA5 intra-annual year forcing
+ NEON = Run with forcing from NEON tower data
+ PLUMBER2 = Run with forcing from PLUMBER2 tower data
SIMPLE = Namelist-configurable, constant datm forcing for simple experiments
CPLHIST = Streams for lnd or ocn/ice forcing used for spinup
@@ -341,6 +343,50 @@
single
+
+
+
+
+
+
+
+ none
+
+
+ $DIN_LOC_ROOT/atm/datm7/CLM1PT_data/PLUMBER2/${PLUMBER2SITE}/CLM1PT_data/CTSM_DATM_${PLUMBER2SITE}_${DATM_YR_START_FILENAME}-${DATM_YR_END}.nc
+
+
+ ZBOT Sa_z
+ TBOT Sa_tbot
+ QBOT Sa_shum
+ WIND Sa_wind
+ PRECTmms Faxa_precn
+ FSDS Faxa_swdn
+ PSRF Sa_pbot
+ FLDS Faxa_lwdn
+
+ null
+
+ none
+
+ null
+ $DATM_YR_ALIGN
+ $DATM_YR_START
+ $DATM_YR_END
+ 0
+
+ linear
+
+
+ cycle
+ limit
+
+
+ 1.5
+
+ single
+
+
@@ -4036,6 +4082,7 @@
1.5
+ 30
single
@@ -4575,6 +4622,7 @@
1.5
+ 30
single
diff --git a/doc/source/datm.rst b/doc/source/datm.rst
index e70c703d..d731bc68 100644
--- a/doc/source/datm.rst
+++ b/doc/source/datm.rst
@@ -176,6 +176,9 @@ DATM_CPLHIST_CASE
DATM_YR_START
- Starting year to loop data over
+DATM_YR_START_FILENAME
+ - Start year listed in PLUMBER2 filename
+
DATM_YR_END
- Ending year to loop data over