Allow for snaphost selection without external nml

This commit is contained in:
Noe Brucy
2023-02-03 15:00:48 +01:00
parent 50138ebf2f
commit 9bda60702a
+17 -6
View File
@@ -52,6 +52,7 @@ class RunSelector:
time=None,
unit_time=None,
allow_nodata=False,
fallback_namelist=True,
):
"""
Select runs and outputs with several filter options.
@@ -95,11 +96,14 @@ class RunSelector:
self.path_in = path_in
self.nml_filename = nml_filename
self.fallback_nml = fallback_namelist
self.allow_nodata = allow_nodata
self.namelist = {}
self.runs = self.get_runs(in_runs, filter_name, filter_nml, sort_run_by)
self.allow_nodata = allow_nodata
do_tests = (not self.fallback_nml) or (len(filter_nml) > 0)
self.runs = self.get_runs(
in_runs, filter_name, filter_nml, sort_run_by, do_tests=do_tests
)
self.info = {}
for run in self.runs:
@@ -205,9 +209,10 @@ class RunSelector:
return selected_runs, selected_nums
def load_namelist(self, run):
path_nml = f"{self.path_in}/{run}/{self.nml_filename}"
return NamelistRecursive(f90nml.read(path_nml))
def load_namelist(self, run, path=None):
if path is None:
path = f"{self.path_in}/{run}/{self.nml_filename}"
return NamelistRecursive(f90nml.read(path))
def get_nml_value(self, nml_key, run):
return self.namelist[run][nml_key]
@@ -445,6 +450,12 @@ class RunSelector:
else:
nums = []
# Be sure we have a namelist
if self.fallback_nml and run not in self.namelist:
print(f"WARNING: Used fallback namelist from output {nums[0]}")
path = f"{self.path_in}/{run}/output_{nums[0]:05}/namelist.txt"
self.namelist[run] = self.load_namelist(run, path=path)
# -- Select according to time --
if time_min is not None and len(nums) > 0:
imin = search(nums, time_min, "right")