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