Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability for registry to specify input (IC) file variable names for constituents #259

Merged
merged 12 commits into from
Apr 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions cime_config/cam_autogen.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,7 @@ def _update_genccpp_dir(utility_files, genccpp_dir):

###############################################################################
def generate_registry(data_search, build_cache, atm_root, bldroot,
source_mods_dir, dycore, gen_fort_indent,
reg_config=None):
source_mods_dir, dycore, gen_fort_indent):
###############################################################################
"""
Generate the CAM data source and metadata from the registry,
Expand All @@ -382,14 +381,14 @@ def generate_registry(data_search, build_cache, atm_root, bldroot,
if os.path.exists(genreg_dir):
do_gen_registry = build_cache.registry_mismatch(gen_reg_file,
registry_files,
dycore, reg_config)
dycore)
else:
os.makedirs(genreg_dir)
do_gen_registry = True
# End if
if do_gen_registry:
for reg_file in registry_files:
retvals = gen_registry(reg_file, dycore, reg_config, genreg_dir,
retvals = gen_registry(reg_file, dycore, genreg_dir,
gen_fort_indent, source_mods_dir, atm_root,
logger=_LOGGER, schema_paths=data_search,
error_on_no_validate=True)
Expand All @@ -407,7 +406,7 @@ def generate_registry(data_search, build_cache, atm_root, bldroot,
# Save build details in the build cache
reg_file_paths = [x.file_path for x in reg_file_list if x.file_path]
build_cache.update_registry(gen_reg_file, registry_files, dycore,
reg_config, reg_file_paths, ic_names)
reg_file_paths, ic_names)
else:
# If we did not run the registry generator, retrieve info from cache
reg_file_paths = build_cache.reg_file_list()
Expand Down
19 changes: 6 additions & 13 deletions cime_config/cam_build_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ def __init__(self, build_cache):
self.__gen_init_file = None
self.__registry_files = {}
self.__dycore = None
self.__config = None
self.__sdfs = {}
self.__schemes = {}
self.__host_files = {}
Expand Down Expand Up @@ -244,8 +243,6 @@ def __init__(self, build_cache):
self.__registry_files[new_entry.key] = new_entry
elif item.tag == 'dycore':
self.__dycore = item.text
elif item.tag == 'config':
self.__config = item.text
elif item.tag == 'reg_gen_file':
self.__reg_gen_files.append(clean_xml_text(item))
elif item.tag == 'ic_name_entry':
Expand Down Expand Up @@ -316,11 +313,10 @@ def __init__(self, build_cache):
# end if

def update_registry(self, gen_reg_file, registry_source_files,
dycore, config, reg_file_list, ic_names):
dycore, reg_file_list, ic_names):
"""Replace the registry cache data with input data
"""
self.__dycore = dycore
self.__config = config
self.__gen_reg_file = FileStatus(gen_reg_file, 'generate_registry_file')
self.__registry_files = {}
for rfile in registry_source_files:
Expand Down Expand Up @@ -393,8 +389,6 @@ def write(self):
# end for
dycore = ET.SubElement(registry, 'dycore')
dycore.text = self.__dycore
config = ET.SubElement(registry, 'config')
config.text = self.__config
for rgen_file in self.__reg_gen_files:
rgen_entry = ET.SubElement(registry, 'reg_gen_file')
rgen_entry.text = rgen_file
Expand Down Expand Up @@ -450,14 +444,13 @@ def write(self):
#End with

def registry_mismatch(self, gen_reg_file, registry_source_files,
dycore, config):
dycore):
"""
Determine if the registry input data differs from the data
stored in our cache. Return True if the data differs.
"""
mismatch = False
mismatch = (not self.__dycore) or (self.__dycore != dycore)
mismatch = mismatch or (self.__config != config)
if not mismatch:
mismatch = self.__gen_reg_file.hash_mismatch(gen_reg_file)
# end if
Expand All @@ -467,7 +460,7 @@ def registry_mismatch(self, gen_reg_file, registry_source_files,
my_reg_keys = set(self.__registry_files.keys())
test_reg_keys = {FileStatus.gen_key(x)
for x in registry_source_files}
mismatch = (my_reg_keys != test_reg_keys)
mismatch = my_reg_keys != test_reg_keys
for ref_file in registry_source_files:
if mismatch:
break
Expand Down Expand Up @@ -522,7 +515,7 @@ def ccpp_mismatch(self, sdfs, scheme_files, host_files,
if not mismatch:
my_scheme_keys = set(self.__schemes.keys())
test_scheme_keys = {FileStatus.gen_key(x) for x in scheme_files}
mismatch = (my_scheme_keys != test_scheme_keys)
mismatch = my_scheme_keys != test_scheme_keys
for ref_file in scheme_files:
if mismatch:
break
Expand All @@ -537,7 +530,7 @@ def ccpp_mismatch(self, sdfs, scheme_files, host_files,
if not mismatch:
my_host_keys = set(self.__host_files.keys())
test_host_keys = {FileStatus.gen_key(x) for x in host_files}
mismatch = (my_host_keys != test_host_keys)
mismatch = my_host_keys != test_host_keys
for ref_file in host_files:
if mismatch:
break
Expand All @@ -564,7 +557,7 @@ def xml_nl_mismatch(self, create_nl_file, xml_files):
# Note that this method will ignore duplicated files.
my_xml_keys = set(self.__xml_files.keys())
test_xml_keys = {FileStatus.gen_key(x) for x in xml_files.values()}
mismatch = (my_xml_keys != test_xml_keys)
mismatch = my_xml_keys != test_xml_keys
for ref_file in xml_files.values():
if mismatch:
break
Expand Down
Loading
Loading